forked from sheetjs/sheetjs
systemjs node/browser examples [ci skip]
This commit is contained in:
parent
e996df7b67
commit
53e534f2cc
6
demos/browserify/README.md
Normal file
6
demos/browserify/README.md
Normal file
@ -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
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
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
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
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,
|
||||
|
Loading…
Reference in New Issue
Block a user