systemjs node/browser examples [ci skip]

This commit is contained in:
SheetJS 2017-05-19 12:46:03 -04:00
parent e996df7b67
commit 53e534f2cc
7 changed files with 110 additions and 3 deletions

@ -0,0 +1,6 @@
# Browserify
The library is compatible with browserify and should just work out of the box.
This demo uses the `require` form to expose the whole library, enabling client
code to just `require('xlsx')`. The included demo and Makefile do just that.

2
demos/systemjs/.gitignore vendored Normal file

@ -0,0 +1,2 @@
systemjs/
xlsx.full.min.js

@ -1,3 +1,4 @@
.PHONY: test
test:
cp ../../dist/xlsx.full.min.js .
node systemjsnode.js

66
demos/systemjs/README.md Normal file

@ -0,0 +1,66 @@
# SystemJS Demos
SystemJS supports both browser and nodejs deployments. It does not recognize
browser environments and automatically suppress node core modules, but with some
configuration magic SystemJS can load the library.
## Browser
SystemJS fails by default because the library does not export anything in the
web browser. This is easily addressed in the config:
```js
SystemJS.config({
meta: {
'xlsx': {
exports: 'XLSX' // <-- tell SystemJS to expose the XLSX variable
}
},
map: {
'xlsx': 'xlsx.full.min.js', // <-- make sure xlsx.full.min.js is in same dir
'fs': '', // <--|
'crypto': '', // <--| suppress native node modules
'stream': '' // <--|
}
});
SystemJS.import('main.js')
```
In your main JS script, just use require:
```js
var XLSX = require('xlsx');
var w = XLSX.read('abc,def\nghi,jkl', {type:'binary'});
var j = XLSX.utils.sheet_to_json(w.Sheets[w.SheetNames[0]], {header:1});
console.log(j);
```
The file functions `readFile` and `writeFile` are not available in the browser.
## Node
The node core modules should be mapped to their `@node` equivalents:
```js
var SystemJS = require('systemjs');
SystemJS.config({
map: {
'xlsx': 'node_modules/xlsx/xlsx.js',
'fs': '@node/fs',
'crypto': '@node/crypto',
'stream': '@node/stream'
}
});
```
And use is pretty straightforward:
```js
SystemJS.import('xlsx').then(function(XLSX) {
/* XLSX is available here */
var w = XLSX.readFile('test.xlsx');
var j = XLSX.utils.sheet_to_json(w.Sheets[w.SheetNames[0]], {header:1});
console.log(j);
});
```

5
demos/systemjs/main.js Normal file

@ -0,0 +1,5 @@
var XLSX = require('xlsx');
console.log(XLSX);
var w = XLSX.read('abc,def\nghi,jkl', {type:'binary'});
var j = XLSX.utils.sheet_to_json(w.Sheets[w.SheetNames[0]], {header:1});
console.log(j);

30
demos/webpack/README.md Normal file

@ -0,0 +1,30 @@
# Webpack
This library is built with some dynamic logic to determine if it is invoked in a
script tag or in nodejs. Webpack does not understand those feature tests, so by
default it will do some strange things.
## Suppressing the Node shims
The library properly guards against accidental leakage of node features in the
browser but webpack disregards those. The config should explicitly suppress:
```js
node: {
fs: false,
process: false,
Buffer: false
}
```
## Exporting the XLSX variable
This library will not assign to module.exports if it is run in the browser. To
convince webpack, set `output` in the webpack config:
```js
output: {
libraryTarget: 'var',
library: 'XLSX'
}
```

@ -3,9 +3,6 @@ module.exports = {
libraryTarget: 'var',
library: 'XLSX'
},
module: {
noParse: [/jszip.js$/]
},
node: {
fs: false,
process: false,