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

是否需要在package.json中同时配置main与exports字段?

关于package.json中exports与main属性的兼容问题

简单说:建议保留main属性,核心原因是为了兼容不支持exports特性的旧版工具、Node.js环境和包管理器。

具体细节:

  • exports是较新的特性,能实现多入口导出、条件导出(比如区分import和require语法)等进阶功能,但它的支持是从Node.js v12.7.0、Webpack 5、npm v7等版本开始的。很多仍在使用旧版环境的用户(比如Node.js v12.16之前的版本、Webpack 4及更早),他们的工具无法识别exports配置,这时候main就会作为降级的默认入口,保证包能被正常加载。
  • 实际配置中,你可以同时声明main和exports,支持exports的现代工具会优先遵循exports的规则,不支持的环境则会 fallback 到main指定的文件。比如:
{
  "name": "your-package",
  "main": "./dist/index.cjs",
  "exports": {
    ".": {
      "import": "./dist/index.mjs",
      "require": "./dist/index.cjs"
    },
    "./foo": "./dist/foo.js"
  }
}
  • 如果你明确只面向完全支持exports的现代环境(比如要求用户使用Node.js v16+、Webpack 5+),也可以选择移除main,但这种情况在实际场景中比较少见,大部分包为了覆盖更多用户,都会保留main作为兼容方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:12:01