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

如何为Parcel指定多个ES模块输出路径?

如何为Parcel配置多入口ES模块输出路径?

核心解决方案

通过在package.json的targets字段中明确配置ES模块输出规则,替代命令行入口指定,即可实现多入口、多路径的ES模块输出。以下是具体配置步骤:


1. 修改package.json配置

调整targets字段定义ES模块输出规则,同时简化构建脚本:

{
  "name": "parsel-test",
  "version": "1.0.0",
  "scripts": {
    "build": "parcel build"
  },
  "targets": {
    "esm": {
      "source": "./src/*.ts",
      "outputFormat": "esmodule",
      "distDir": "dist",
      "outputFileName": "[name].mjs"
    }
  },
  "devDependencies": {
    "@parcel/packager-ts": "^2.7.0",
    "@parcel/transformer-typescript-types": "^2.7.0",
    "parcel": "latest",
    "typescript": "^4.8.4"
  }
}
  • source: 指定所有src目录下的TS文件作为入口
  • outputFormat: 明确设置为esmodule,强制输出ES模块格式
  • distDir: 定义输出根目录
  • outputFileName: 使用[name]变量保留原文件名,添加.mjs后缀明确标识ES模块

如果需要将不同入口输出到不同子路径,可配置多个独立目标:

"targets": {
  "esm-utils": {
    "source": "./src/utils/*.ts",
    "outputFormat": "esmodule",
    "distDir": "dist/utils",
    "outputFileName": "[name].mjs"
  },
  "esm-core": {
    "source": "./src/core/*.ts",
    "outputFormat": "esmodule",
    "distDir": "dist/core",
    "outputFileName": "[name].mjs"
  }
}

2. 调整tsconfig.json适配ES模块

将module字段改为ES模块规范,确保TypeScript编译输出与Parcel的ES模块目标匹配:

{
  "compilerOptions": {
    "module": "ESNext",
    "target": "es5",
    "sourceMap": true,
    "isolatedModules": true,
    "incremental": false
  },
  "exclude": ["node_modules"]
}

3. 验证构建

运行npm run build后,dist目录下会生成对应入口的ES模块文件(如add.mjs),同时自动生成对应的类型声明文件(.d.ts),不会再出现空文件问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:45:45