webassembly-loader
this loader can also be used as a library ↙ see who use this?
tl;dr -- see examples
Motivation
Minimum Requirements
Installation
npm install webassembly-loader --save-dev
or
yarn add webassembly-loader --dev
Options
export
How wasm code would be exported. (see examples)
- Type:
string
- Default:
async
- Expected value:
webpack.config.js
module.exports = {
rules: [{
test: /\.wasm$/,
type: "javascript/auto",
use: [{
loader: "webassembly-loader",
options: {
export: "async"
}
}]
}]
}
tips: you can use query parameter to change export mode on demand
Examples
See the test cases and example projects in *.test.ts and examples for more insight.
{export: 'buffer'}
import wasmCode from "./lib.wasm";
WebAssembly.compile(wasmCode).then(module => {
const instance = new WebAssembly.Instance(module);
console(instance.exports.add(1, 2));
});
{export: 'module'}
import wasmModule from "./lib.wasm";
const instance = new WebAssembly.Instance(wasmModule);
console(instance.exports.add(1, 2));
{export: 'instance'}
import wasm from "./lib.wasm";
console(wasm.exports.add(1, 2));
{export: 'async'}
import wasmInstantiate from "./lib.wasm";
wasmInstantiate(importObject | undefined).then(({ instance, module }) => {
console(instance.exports.add(1, 2));
const differentInstance = new WebAssembly.Instance(module);
console(differentInstance.exports.add(1, 2));
});
{export: 'async-instance'}
import wasmInstantiate from "./lib.wasm";
wasmInstantiate(importObject | undefined).then(instance => {
console(instance.exports.add(1, 2));
});
{export: 'async-module'}
import wasmInstantiate from "./lib.wasm";
wasmCompile(importObject | undefined).then(module => {
const differentInstance = new WebAssembly.Instance(module);
console(differentInstance.exports.add(1, 2));
});
Who use this?
Contributing
Credits
License
MIT