This module has moved and is now available at @rollup/plugin-wasm. Please update your dependencies. This repository is no longer maintained.
Rollup plugin for importing WebAssembly modules.
Use this Rollup plugin to import WebAssembly modules and bundle them as base64 strings. They are imported async (but small modules can be imported sync).
npm i -D rollup-plugin-wasm
Add the plugin to your rollup config and then any imported .wasm
file will be processed by it.
import wasm from 'rollup-plugin-wasm'
export default {
input: 'web/index.js',
plugins: [
wasm()
]
}
Given the following simple C file (compiled using emscripten, or the online WasmFiddle tool):
int main() {
return 42;
}
Import and instantiate the resulting file:
import wasm from './sample.wasm';
wasm({ ...imports }).then(({ instance }) => {
console.log(instance.exports.main())
})
The WebAssembly is inlined as a base64 encoded string (which means it will be ~33% larger than the original). At runtime the string is decoded and a module is returned.
Small modules (< 4KB) can be compiled synchronously by specifying them in the configuration.
wasm({
sync: [
'web/sample.wasm',
'web/foobar.wasm'
]
})
This means that the exports can be accessed immediately.
import module from './sample.wasm'
const instance = sample({ ...imports })
console.log(instance.exports.main())