Skip to Content
DocsPluginPublishing

Publishing plugins

If you prefer reading codes, you can refer to the repository for official plugins.

Register on plugins.swc.rs

After publishing your plugin package, add it to the plugin crawler index so it appears on plugins.swc.rs.

See Registering plugins for the step-by-step guide.

Creating a npm package

Building a plugin as a wasm

You can run your plugin as a wasm file by running

cargo build-wasi --release // build wasm32-wasi target binary cargo build-wasm32 --release // build wasm32-unknown-unknown target binary

It will create target/wasm32-wasi/release/your_plugin_name.wasm or target/wasm32-unknown-unknown/release/your_plugin_name.wasm, depending on your config.

Creating a npm package for plugin

Add the following to your package.json:

package.json
{ "main": "your_plugin_name.wasm", "scripts": { "prepack": "cargo prepublish --release && cp target/wasm32-wasi/release/your_plugin_name.wasm ." }, }

Advanced: Improving your plugin

Adjusting configuration for smaller binary

You can reduce the size of the plugin by configuring cargo.

In your Cargo.toml file, you can add the following lines.

Cargo.toml
[profile.release] # This removes more dead code codegen-units = 1 lto = true # Optimize for size opt-level = "s" # Optimize for performance, this is default so you don't need to specify it # opt-level = "z" # Strip debug symbols strip = "symbols"

Removing log for release mode

If logging of your crate is too much, you can remove it by enabling release_max_level_* of tracing, like

tracing = { version="0.1", features = ["release_max_level_info"] }
Last updated on
Powered by