package.json的main,module,browser属性是应该指向minified还是source?

问题描述 投票:2回答:1

对于一个以...结构发布的JS库

my-package\
  dist\
    my-package.cjs.js
    my-package.cjs.min.js
    my-package.cjs.min.js.map
    my-package.esm.js
    my-package.esm.min.js
    my-package.esm.min.js.map
    my-package.umd.js
    my-package.umd.min.js
    my-package.umd.min.js.map
  package.json

例如。内置于CJS,ESM和UMD捆绑包,每个捆绑包都有一个“源”,缩小和映射文件。

的package.json

{ // ...
  "main": "dist/my-package.cjs.js",
  "module": "dist/my-package.esm.js",
  "browser": "dist/my-package.umd.js"
}

我的假设是这些属性应该指向“源”文件,并且用于将我的库(例如Webpack)捆绑到外部项目中的工具足够聪明,如果构建是非调试/非开发模式,则选择缩小的文件。

或者,我错了,这些属性应该指向缩小的文件?

javascript node.js npm webpack rollup
1个回答
-1
投票

我想你是对的。如果您只是发布ESM和UMD,那么您可以坚持下去

{ // ...
  "main": "dist/my-package.umd.js",
  "module": "dist/my-package.esm.js"
}

最重要的是,使用“模块”,您可以提供捆绑版本,该版本由通过Webpack或Rollup编译的应用程序有效使用。在这种情况下可以应用树摇动,因此所有死代码都不包含在最终捆绑中。

例如,这对于React组件库很有用。您可以通过这种方式导出它,以便使用它的应用程序只获取正在使用的组件的代码。

这是在此之前回答的:

What is the "module" package.json field for?

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.