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

如何为@nrwl/esbuild:esbuild配置两个入口以生成两个.cjs包?

实现多入口生成多个.cjs文件的可行方案

方案1:配置多个独立ESBuild Target

在project.json中为每个入口文件单独定义@nrwl/esbuild:esbuild target,分别指定入口与输出路径:

{
  "targets": {
    "build-main": {
      "executor": "@nrwl/esbuild:esbuild",
      "options": {
        "main": "src/main-thread.ts",
        "outputPath": "dist/main",
        "format": ["cjs"],
        "platform": "node",
        "bundle": true
      }
    },
    "build-worker": {
      "executor": "@nrwl/esbuild:esbuild",
      "options": {
        "main": "src/worker-thread.ts",
        "outputPath": "dist/worker",
        "format": ["cjs"],
        "platform": "node",
        "bundle": true
      }
    },
    "build": {
      "dependsOn": ["build-main", "build-worker"]
    }
  }
}

执行nx build会同时触发两个target,生成各自独立的.cjs文件,彻底分离主线程与工作线程代码。

方案2:使用自定义ESBuild配置文件

若需要复用配置逻辑,可创建独立的ESBuild配置文件,在project.json中指定config字段调用:

{
  "targets": {
    "build-main": {
      "executor": "@nrwl/esbuild:esbuild",
      "options": {
        "config": "esbuild.main.config.js"
      }
    },
    "build-worker": {
      "executor": "@nrwl/esbuild:esbuild",
      "options": {
        "config": "esbuild.worker.config.js"
      }
    }
  }
}

esbuild.main.config.js示例(完全遵循ESBuild原生配置规范):

module.exports = {
  entryPoints: ['src/main-thread.ts'],
  outfile: 'dist/main/index.cjs',
  format: 'cjs',
  platform: 'node',
  bundle: true
};

这种方式可以绕开Nx封装的限制,直接使用ESBuild官网的所有配置选项。

关键注意事项

  • 确保不同target的outputPath不重叠,避免文件覆盖
  • 若需共享依赖缓存,可在target配置中添加cacheableOperations字段
  • 执行单个target用nx run <project>:build-main,批量执行用nx build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:31:21