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


111

我已经看到一些npm软件包(例如vuepkg.module在package.json中有一个字段。是"module"npm的官方财产,还是某种约定?在某处有相关文档吗?这是为了什么?esnext路径?捆绑的模块路径?


2
约定的ECMAScript模块-这里是对不同的方法读取识别ESM的一个很好:hackernoon.com/...
hackerrdave

Answers:


118

"module"npm的官方财产,还是某种约定?

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

在某处有相关文档吗?

还有就是,事实上,它可以发现在这里,后来删除

这是为了什么?

节点中的ES6模块互操作性。在此处此处可以找到更多讨论。这是Rich Harris 的博客文章,内容更多。


1
WebPack是否在某个地方有此文档,或者只是汇总?
tech4him

1
看起来他们已经在这里添加了它:webpack.js.org/guides/author-libraries/#final-steps
tech4him

43

捆绑工具使用此工具进行ESM(ECMAScript模块)检测。该汇总的文件说,这非常好:

如果您的package.json文件中也有一个module字段,则诸如Rollupwebpack 2之类的ES6感知工具将直接导入ES6模块版本

关于汇总1.0的这篇文章说了另一种方式:

main字段确保require将为使用的Node用户提供UMD版本。该module字段不是npm的正式功能,而是捆绑程序之间的通用约定,用于指定如何导入我们库的ESM版本。

pkg.moduleRollup Github Wikiwebpack Docs上有进一步的讨论。


1
应该main是该库的UMD版本的缩小版本吗?还是应该成为一个小型的?那module呢 我猜该模块不应该缩小,因为用户将使用其捆绑程序(Webpack,Parcel等),并且通过将源文件与ES6模块一起使用,捆绑程序可以破坏树状结构,对吗?
tonix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.