rspack_binding_builder_macros 0.6.3

Rspack binding builder macros
docs.rs failed to build rspack_binding_builder_macros-0.6.3
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: rspack_binding_builder_macros-0.6.1

rspack_binding_builder_macros

Exports a few macros to help you create a custom plugin register with Rspack.

Important

This crate is used for creating a custom binding. It is not intended to be used directly by non-custom binding users.

Guide

Rspack Custom binding

Usage

register_plugin

Create a custom plugin register with Rspack.

The created plugin register will be exposed to the final N-API binding.

The plugin needs to be wrapped with require('@rspack/core').experiments.createNativePlugin to be used in the host.

Parameters

register_plugin macro accepts two arguments:

  • The name of the plugin
  • A resolver function that returns a rspack_core::BoxPlugin

The resolver function accepts two arguments:

  • env: The environment of the plugin, it is the same as napi::bindgen_prelude::Env
  • options: The options of the plugin, it is the same as napi::bindgen_prelude::Unknown<'_>

The resolver function should return a rspack_core::BoxPlugin

Example

This example will expose registerMyBannerPlugin in the final N-API binding:

Note: The following example requires the napi_derive, rspack_binding_builder_macros, rspack_core, and rspack_error crates, and is for illustration only. It may not compile without additional setup.

use napi_derive::napi;
use rspack_binding_builder_macros::register_plugin;

register_plugin!(
  "MyBannerPlugin",
  |env: napi::bindgen_prelude::Env, options: napi::bindgen_prelude::Unknown<'_>| {
    Ok(Box::new(MyBannerPlugin) as rspack_core::BoxPlugin)
  }
);

#[derive(Debug)]
struct MyBannerPlugin;

impl rspack_core::Plugin for MyBannerPlugin {
  fn apply(&self, ctx: &mut rspack_core::ApplyContext<'_>) -> rspack_error::Result<()> {
    Ok(())
  }
}

The registerMyBannerPlugin function will be exposed to the final N-API binding.

const { registerMyBannerPlugin } = require("your-custom-binding");

const plugin = registerMyBannerPlugin();

To actually use the plugin, you need to wrap it with require('@rspack/core').experiments.createNativePlugin:

require("@rspack/core").experiments.createNativePlugin(
	"MyBannerPlugin",
	options => options
);