# FuseBox This library is built with some dynamic logic to determine if it is invoked in a script tag or in nodejs. FuseBox does not understand those feature tests, so by default it will do some strange things. ## TypeScript Support As with most TS modules in FuseBox, the glob import form should be used: ```typescript import * as XLSX from 'xlsx'; ``` The included `sheetjs.ts` script will be transpiled and bundled to `server.js` for the `"node"` target and `client.js` for the `"browser"` target. ## Proper Target Detection Out of the box, FuseBox will automatically provide shims to browser globals like `process` and `Browser`. The proper way to detect `node` uses `process`: ```typescript if(typeof process != 'undefined' && process.versions && process.versions.node) { /* Script is running in nodejs */ } else { /* Script is running in a browser environment */ } ``` ## Server Target The FuseBox documentation configuration can be used as-is: ```js const fuse = FuseBox.init({ homeDir: ".", target: "node", output: "$name.js" }); fuse.bundle("server").instructions(">sheetjs.ts"); fuse.run(); ``` ## Browser Target The native shims must be suppressed for browser usage: ```js const fuse = FuseBox.init({ homeDir: ".", target: "browser", natives: { Buffer: false, stream: false, process: false }, output: "$name.js" }); fuse.bundle("client").instructions(">sheetjs.ts"); fuse.run(); ``` [![Analytics](https://ga-beacon.appspot.com/UA-36810333-1/SheetJS/js-xlsx?pixel)](https://github.com/SheetJS/js-xlsx)