【问题标题】:Should main, module, browser properties of package.json point to minified or source?package.json 的 main、module、browser 属性应该指向缩小版还是源版?
【发布时间】:2019-03-11 01:55:57
【问题描述】:

对于以 ... 之类的结构发布的 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)捆绑到外部项目中的工具足够聪明,可以在构建非调试/非时选择缩小文件-dev 模式。

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

【问题讨论】:

    标签: javascript node.js npm webpack rollup


    【解决方案1】:

    我认为你是对的。如果你只是发布,例如 ESM 和 UMD,你可以坚持

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

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

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

    这是之前回答过的:

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

    【讨论】:

      猜你喜欢
      • 2021-10-23
      • 2015-02-03
      • 1970-01-01
      • 2018-05-28
      • 2017-11-25
      • 2012-05-06
      • 2013-07-10
      • 2019-11-25
      • 1970-01-01
      相关资源
      最近更新 更多