diff --git a/docs/src/commands/build.md b/docs/src/commands/build.md index 884963b44..444c71fba 100644 --- a/docs/src/commands/build.md +++ b/docs/src/commands/build.md @@ -85,3 +85,14 @@ wasm-pack build examples/js-hello-world --mode no-install |---------------|------------------------------------------------------------------------------------------| | `no-install` | `wasm-pack init` implicitly and create wasm binding without installing `wasm-bindgen`. | | `normal` | do all the stuffs of `no-install` with installed `wasm-bindgen`. | + +## Extra options + +The `build` command can pass extra options straight to `cargo build` even if they are not +supported in wasm-pack. To use them you should add standalone `--` argument at the very +end of your command, and all the arguments you want to pass to cargo should go after. +For example to build previous example using unstable cargo offline feature: + +``` +wasm-pack build examples/js-hello-world --mode no-install -- -Z offline +``` diff --git a/tests/all/build.rs b/tests/all/build.rs index cc21fbb58..301700d8f 100644 --- a/tests/all/build.rs +++ b/tests/all/build.rs @@ -228,3 +228,20 @@ fn build_with_and_without_wasm_bindgen_debug() { ); } } + +#[test] +fn build_with_arbitrary_cargo_options() { + let fixture = utils::fixture::js_hello_world(); + fixture.install_local_wasm_bindgen(); + + let cli = Cli::from_iter_safe(vec![ + "wasm-pack", + "build", + &fixture.path.display().to_string(), + "--", + "--no-default-features", + ]) + .unwrap(); + fixture.run(cli.cmd).unwrap(); +} +