sheetjs/demos/requirejs
..
.gitignore
app.js
browser.html
build.js
Makefile
optimizer.html
README.md
xlsx-shim.js

RequireJS

The minified dist files trip up the RequireJS mechanism. To bypass, the scripts automatically expose an XLSX variable that can be used if the require callback argument is _XLSX rather than XLSX. This trick is employed in the included xlsx-shim.js script:

/* xlsx-shim.js */
define(['xlsx'], function (_XLSX) {
	return XLSX;
});

The require config should set xlsx path to the appropriate dist file:

	paths: {
		xlsx: "xlsx.full.min"
	},

Once that is set, app code can freely require "xlsx-shim":

require(["xlsx-shim"], function(XLSX) {
	/* use XLSX here */
});

Deployments

browser.html demonstrates a dynamic deployment, using the in-browser config:

<script src="require.js"></script>
<script>
require.config({
	baseUrl: ".",
	name: "app",
	paths: {
		xlsx: "xlsx.full.min"
	}
});
</script>
<script src="app.js"></script>

optimizer.html demonstrates an optimized deployment using build.js config:

/* build config */
({
	baseUrl: ".",
	name: "app",
	paths: {
		xlsx: "xlsx.full.min"
	},
	out: "app-built.js"
})

The optimizer is invoked with:

node r.js -o build.js paths.requireLib=./require include=requireLib

That step creates a file app-built.js that can be included in a page:

<!-- final bundle includes require.js, xlsx-shim, library and app code -->
<script src="app-built.js"></script>

Analytics