wast2js
Compile WebAssembly .wat files to a common js module
npm install -g wast2js
See https://github.com/WebAssembly/wabt for more WebAssembly goodies.
Currently requires the wast2wasm
program to be installed globally.
Usage
First make a basic WebAssembly .wat file
;; example.wat
(module
;; var result = add(a, b)
(func (export "add") (param $a i32) (param $b i32) (result i32)
;; return a + b
(i32.add
(get_local $a)
(get_local $b)
)
)
)
Then compile it to WebAssembly and wrap in a common js loader by doing
wast2js example.wat -o example.js
To run the WebAssembly simply do:
var example = // load the wasmif !example throw 'WebAssembly not supported by your runtime'var result = exampleexportsconsole
To keep recompiling the .wat
file when it changes pass the --watch
option as well
wast2js example.wat -o example.js --watch # recompile when example.wat changes
API
var mod = require('./compiled-wat.js')([options])
Loads your WebAssembly module. If WebAssembly is not supported by the runtime, null
is returned.
Options include:
imports: ... // import objected forwared to WASM,async: false // force async loading.
Note that if your WASM is larger than 4kb, some browsers might force async loading.
mod
looks like this
exports: ... // exports WASM functionsmemory: Uint8Array // exports.memory wrapped in a uint8array (if exported)buffer: Uint8Array // the WASM module as a bufferonload: // function you can call to wait for async loadingrealloc: // reallocate the memory buffer to a new size
In case of async loading exports
and memory
will be null
until the module has been loaded.
License
MIT