The wasm-pack init
command creates the files neccessary for JavaScript
interoperability and for publishing a package to npm. This involves compiling
your code to wasm and generating a pkg folder. This pkg folder will contain the
wasm binary, a JS wrapper file, your README
, and a package.json
file.
The wasm-pack init
command can be given an optional path argument, e.g.:
wasm-pack init examples/js-hello-world
This path should point to a directory that contains a Cargo.toml
file. If no
path is given, the init
command will run in the current directory.
The init command accepts a --target
argument. This will customize the output files
to align with a particular type of JS module. This allows wasm-pack to generate either
ES6 modules or CommonJS modules for use in browser and in NodeJS. Defaults to browser
.
The options are:
wasm-pack init --target nodejs
Option | Description |
---|---|
nodejs |
Outputs JS that uses CommonJS modules, for use with a require statement. |
browser |
Outputs JS that uses ES6 modules, primarily for use with import statements and/or bundlers such as webpack . |
The init command also accepts an optional --scope
argument. This will scope
your package name, which is useful if your package name might conflict with
something in the public registry. For example:
wasm-pack init examples/js-hello-world --scope test
This command would create a package.json
file for a package called
@test/js-hello-world
. For more information about scoping, you can refer to
the npm documentation here.
The init command accepts an optional --debug
argument. This will build the
output package using cargo's
default non-release profile. Building
this way is faster but applies few optimizations to the output, and enables
debug assertions and other runtime correctness checks.
The exact meaning of this flag may evolve as the platform matures.
The init command accepts an optional --skip-build
argument.
This will deactivate those steps:
- installing wasm target (via cargo)
- compiling the code to wasm
- installing wasm-bindgen (via rustup)
- running wasm-bindgen on the built wasm
Basically it will remains only the steps that update the metadata of package.json
.