3.0.0 • Published 6 years ago

rollup-plugin-wasm v3.0.0

Weekly downloads
108
License
MIT
Repository
github
Last release
6 years ago

rollup-plugin-wasm

semantic-release

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).

Install

npm i -D rollup-plugin-wasm

Configuration

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()
  ]
}

Example

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';

sample({ ...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.

Sync Modules

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())
3.0.0

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.0.0

7 years ago

0.1.0

7 years ago