Skip to content
This repository was archived by the owner on Mar 18, 2022. It is now read-only.

Commit ed87e34

Browse files
Add more documentation on using sql.js in the browser
1 parent f7bcd8f commit ed87e34

File tree

1 file changed

+52
-3
lines changed

1 file changed

+52
-3
lines changed

docs/supported-platforms.md

+52-3
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,12 @@ You can use [sql.js](https://github.com/kripken/sql.js) in the browser.
2020
In the `browser` folder the package also includes a version compiled as a ES2015 module. If you want to use a different loader this is the point to start. Prior to TypeORM 0.1.7, the package is setup in a way that loaders like webpack will automatically use the `browser` folder. With 0.1.7 this was dropped to support Webpack usage in Node.js projects. This means, that the `NormalModuleReplacementPlugin` has to be used to insure that the correct version is loaded for browser projects. The configuration in your webpack config file, for this plugin looks like this:
2121

2222
```js
23+
// webpack.config.js
2324
plugins: [
2425
..., // any existing plugins that you already have
2526
new webpack.NormalModuleReplacementPlugin(/typeorm$/, function (result) {
2627
result.request = result.request.replace(/typeorm/, "typeorm/browser");
2728
}),
28-
new webpack.ProvidePlugin({
29-
'window.SQL': 'sql.js/js/sql.js'
30-
})
3129
]
3230
```
3331

@@ -51,6 +49,57 @@ In your main html page, you need to include reflect-metadata:
5149
<script src="./node_modules/reflect-metadata/Reflect.js"></script>
5250
```
5351

52+
### Loading Sql.js
53+
54+
From Sql.js v1.0 there are a couple of options for loading, since it comes in both pure JavaScript (asm.js) and WebAssembly versions.
55+
56+
**Using the WebAssembly version**
57+
58+
When the WebAssembly version runs in the browser, it will attempt to fetch the `sql-wasm.wasm` file from the directory where the
59+
script is located. Therefore you'll need to copy this file over as part of your build:
60+
61+
```js
62+
// webpack.config.js
63+
const CopyPlugin = require('copy-webpack-plugin');
64+
65+
plugins: [
66+
..., // any existing plugins that you already have
67+
new webpack.ProvidePlugin({
68+
'window.initSqlJs': 'sql.js',
69+
}),
70+
new CopyPlugin([
71+
{ from: 'node_modules/sql.js/dist/sql-wasm.wasm' },
72+
]),
73+
]
74+
```
75+
76+
**Using the asm.js version**
77+
78+
In this case you can omit the file copy step and just point directly to the asm.js version:
79+
80+
```js
81+
// webpack.config.js
82+
plugins: [
83+
..., // any existing plugins that you already have
84+
new webpack.ProvidePlugin({
85+
'window.initSqlJs': path.join(__dirname, 'node_modules/sql.js/dist/sql-asm.js'),
86+
}),
87+
]
88+
```
89+
90+
**Sql.js < 1.0**
91+
92+
For older versions of Sql.js, use the following webpack config:
93+
```js
94+
// webpack.config.js
95+
plugins: [
96+
..., // any existing plugins that you already have
97+
new webpack.ProvidePlugin({
98+
'window.SQL': 'sql.js'
99+
}),
100+
]
101+
```
102+
54103
## Cordova / PhoneGap / Ionic apps
55104

56105
TypeORM is able to run on Cordova, PhoneGap, Ionic apps using the

0 commit comments

Comments
 (0)