编译前端 JS 库

package.json 的 main 和输出格式

作为应用,编译一个 UMD 模块就够了,因为不会被其他项目依赖。

作为类库,应该至少提供以下三种模块。

{
  ...
  "main": "dist/eat-fruit.cjs.js",
  "browser": "dist/eat-fruit.umd.js",
  "module": "dist/eat-fruit.mjs",
  ...
}
  • main: CommonJS 模块。Node 加载场景。
  • browser: UMD 模块。提供浏览器 <script> 加载。
  • module: ES Module。Rollup 和 Webpack 加载用。

参考这里

webpack 解析这三个字段用的是 resolve.mainFields 配置。

如果读的是 UMD 的包,Rollup 可能无法解析 UMD 模块的 export,会报 name is not exported by module 的错误。

参考文章