You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SWC编译器插件中获取Next.js配置传递的参数?

在SWC插件中获取Next.js传递的配置参数

你的Next.js配置传递参数的格式是正确的,下面分两种常见的SWC插件类型说明如何获取参数:

Rust编写的WASM插件(最常见)

  1. 定义配置结构体
    通过serde定义与传递参数结构匹配的结构体,用于反序列化配置:

    use serde::Deserialize;
    
    #[derive(Deserialize)]
    struct PluginConfig {
        param: String,
    }
    
  2. 在插件的transform方法中解析配置
    实现SWC的Plugin trait时,transform方法的PluginTransformContext参数包含了传递的配置数据,将其反序列化为你定义的结构体即可:

    use swc_core::plugin::{Plugin, PluginTransformContext, TransformPluginProgramMetadata};
    use swc_core::ecma::ast::Program;
    
    struct MyPlugin;
    
    impl Plugin for MyPlugin {
        fn transform(
            &mut self,
            program: Program,
            _metadata: TransformPluginProgramMetadata,
            plugin_transform_context: PluginTransformContext,
        ) -> Result<Program, swc_core::plugin::Error> {
            // 解析Next.js传递的JSON配置
            let config: PluginConfig = serde_json::from_slice(plugin_transform_context.config)
                .map_err(|e| swc_core::plugin::Error::Custom(e.to_string()))?;
    
            // 验证参数是否获取成功
            println!("从Next.js收到的参数: {}", config.param);
    
            // 在这里编写你的插件转换逻辑
            Ok(program)
        }
    }
    
    SWC_PLUGIN!(MyPlugin);
    
  3. 添加必要依赖
    在Cargo.toml中确保包含相关依赖:

    [dependencies]
    serde = { version = "1.0", features = ["derive"] }
    serde_json = "1.0"
    swc_core = { version = "0.75", features = ["plugin"] }
    

JavaScript编写的SWC插件

如果你的插件是用JS编写的,直接从transform函数的options参数中提取配置:

module.exports = function transform(program, options) {
    const { param } = options.config;
    console.log('从Next.js收到的参数:', param);
    
    // 编写你的转换逻辑
    return program;
};

注意事项

  • 确保WASM插件编译后的文件路径正确,Next.js的require.resolve能准确定位到插件文件。
  • 运行Next.js时查看终端输出,确认参数是否被正确打印,以此验证配置是否传递成功。

内容的提问来源于stack exchange,提问作者Roman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:50:15