guide: Overhaul the CLI reference content

* Add missing documentation for a couple existing flags.

* Make each flag its own header, so it gets an anchor, and can be permalinked
  to.

* Streamline some content and descriptions.
This commit is contained in:
Nick Fitzgerald 2018-08-03 16:05:14 -07:00 committed by Alex Crichton
parent 2b83f6aa9b
commit 9e03dba413

View File

@ -1,30 +1,68 @@
# The `wasm-bindgen` Command Line Interface # The `wasm-bindgen` Command Line Interface
The `wasm-bindgen` tool has a number of options available to it to tweak the JS The `wasm-bindgen` command line tool has a number of options available to it to
that is generated. By default the generated JS uses ES modules and is compatible tweak the JavaScript that is generated. The most up-to-date set of flags can
with both Node and browsers (but will likely require a bundler for both use always be listed via `wasm-bindgen --help`.
cases).
Supported flags of the CLI tool can be learned via `wasm-bindgen --help`, but ## Usage
some notable options are:
* `--nodejs`: this flag will tailor output for Node instead of browsers, ```
allowing for native usage of `require` of the generated JS and internally wasm-bindgen [options] ./target/wasm32-unknown-unknown/release/crate.wasm
using `require` instead of ES modules. When using this flag no further ```
postprocessing (aka a bundler) should be necessary to work with the wasm.
* `--browser`: this flag will tailor the output specifically for browsers, ## Options
making it incompatible with Node. This will basically make the generated JS a
tiny bit smaller as runtime checks for Node won't be necessary.
* `--no-modules`: the default output of `wasm-bindgen` uses ES modules but this ### `--out-dir DIR`
option indicates that ES modules should not be used and output should be
tailored for a web browser. More information on this flag, and
`--no-modules-global`, can be found in the [no ES modules
documentation](./no-esm.html).
* `--no-typescript`: by default a `*.d.ts` file is generated for the generated The target directory to emit the JavaScript bindings, TypeScript definitions,
JS file, but this flag will disable generating this TypeScript file. processed `.wasm` binary, etc...
* `--debug`: generates a bit more JS and wasm in "debug mode" to help catch ### `--nodejs`
programmer errors, but this output isn't intended to be shipped to production.
This flag will tailor output for Node instead of browsers, allowing for native
usage of `require` of the generated JS and internally using `require` instead of
ECMAScript modules. When using this flag no further postprocessing (aka a
bundler) should be necessary to work with the wasm.
### `--browser`
This flag will tailor the output specifically for browsers, making it
incompatible with Node. This will basically make the generated JS a tiny bit
smaller as runtime checks for Node won't be necessary.
### `--no-modules` and `--no-modules-global VAR`
The default output of `wasm-bindgen` uses ECMAScript modules. These options
indicate that ECMAScript modules should *not* be used, and that output should be
tailored for a properties on the JavaScript global object (e.g. `window`).
The `--no-modules-global VAR` option makes `VAR` the global property that the
JavaScript bindings are attached to.
More information can be found in the [documentation for building without
ECMAScript modules](./no-esm.html).
### `--typescript`
Output a TypeScript declaration file for the generated JavaScript bindings. This
is on by default.
### `--no-typescript`
By default, a `*.d.ts` TypeScript declaration file is generated for the
generated JavaScript bindings, but this flag will disable that.
### `--debug`
Generates a bit more JS and wasm in "debug mode" to help catch programmer
errors, but this output isn't intended to be shipped to production.
### `--no-demangle`
When post-processing the `.wasm` binary, do not demangle Rust symbols in the
"names" custom section.
### `--keep-debug`
When post-processing the `.wasm` binary, do not strip DWARF debug info custom
sections.