什么是"module"package.json字段?

rya*_*nve 89 javascript npm package.json

我已经看到一些npm包(例如vue)pkg.module在他们的package.json中有一个字段.是"module"官方的npm财产还是某种约会?这个地方有文件吗?这是为了什么?esnext路径?非捆绑模块路径?

Jos*_*das 100

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

这是一个提议,但由于事实上的使用可能会得到支持.

这个地方有文件吗?

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

这是为了什么?

ES6模块在节点中的互操作性.可在此处此处找到其他讨论.这是Rich Harris 的一篇博文,更多地谈论它.

  • 看起来他们在这里添加了它:https://webpack.js.org/guides/author-libraries/#final-steps (2认同)
  • 这从未得到实施。相反,它们具有可以设置为“模块”的“类型”字段。 (2认同)

Jac*_*eam 33

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

如果您的package.json文件还有一个module字段,那么像Rollupwebpack 2这样的ES6感知工具将直接导入ES6模块版本.

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

main字段确保使用的Node用户require将被提供UMD版本.该module字段不是官方的npm功能,而是捆绑商之间的通用约定,用于指定如何导入库的ESM版本.

pkg.module关于Rollup Github Wikiwebpack Docs的进一步讨论.

  • `main` 应该是库的 UMD 版本的缩小版本吗?或者它应该是一个未缩小的?那么“模块”呢?我想该模块不应该被缩小,因为用户将使用它的捆绑器(Webpack、Parcel 等),并且通过使用带有 ES6 模块导出的源文件,捆绑器可以进行树摇动,对吗? (3认同)