“module” package.json 字段的用途是什么?

2022-08-30 02:20:01

我见过一些npm包(例如vue)在他们的package.json中有一个字段。module

但是模块不包含在 package.json 文档中 - 这是某种约定吗?在某个地方有这方面的文档吗?


答案 1

更新日期:2022 年 4 月

该字段未由 Node 正式定义.js并且未计划支持。相反,Node.js社区决定采用他们认为功能更强大的软件包出口module

出于实际原因,JavaScript捆绑器将继续支持该领域。esbuild 文档解释了何时使用以及相关字段和 .modulemodulemainbrowser

原始答案

这是官方的npm属性还是某种约定?"module"

这是一个建议,但由于实际使用情况,可能会得到支持。

在某个地方有这方面的文档吗?

事实上,有,它可以在这里找到,后来在这里删除。

这是干什么用的?

ES6 模块在节点中的互操作性。其他讨论可以在这里这里找到。这是里奇·哈里斯(Rich Harris)的一篇博客文章,详细讨论了这个问题。


答案 2

这由捆绑工具用于 ESM(ECMAScript 模块)检测。汇总文档说得非常好:

如果你的文件也有一个字段,ES6感知工具(如Rollupwebpack 2)将直接导入ES6模块版本package.jsonmodule

这篇关于Rollup 1.0的文章以另一种方式说:

该字段确保使用的 Node 用户将获得 UMD 版本。该字段不是官方的 npm 功能,而是捆绑程序之间的常见约定,用于指定如何导入我们库的 ESM 版本。mainrequiremodule

进一步的讨论是在Rollup Github Wikiwebpack Docs上。pkg.module