【问题标题】:What is the "module" package.json field for?什么是“模块” package.json 字段?
【发布时间】:2017-07-31 05:07:56
【问题描述】:

我看到一些 npm 包 (vue for example) 在其 package.json 中有一个 module 字段。

但是module is not included in the package.json documentation - 这是某种约定吗?在某处有这方面的文档吗?

【问题讨论】:

  • ECMAScript 模块的约定 - 这里是关于识别 ESM 的不同方法的好读物:hackernoon.com/…

标签: javascript npm package.json


【解决方案1】:

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

这是一个proposal,但由于事实上的使用,可能会受到支持。

在某处有这方面的文档吗?

其实是有的,可以找到right here,后来又去掉了here

它是干什么用的?

Node.js 中的 ES6 模块互操作性。可以在herehere 找到更多讨论。这里是来自 Rich Harris 的 a blog post 正在谈论它。

【讨论】:

【解决方案2】:

这被捆绑工具用于 ESM(ECMAScript 模块)检测。 Rollup documentation 说得很好:

如果你的package.json 文件也有一个module 字段,ES6 感知工具 比如Rollupwebpack 2会直接import the ES6 module version

This article on Rollup 1.0 换一种说法:

main 字段确保使用 require 的 Node 用户将获得 UMD 版本。 module 字段不是官方的 npm 功能,而是捆绑器之间的通用约定,用于指定如何导入我们库的 ESM 版本。

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

【讨论】:

  • main 应该是库的 UMD 版本的缩小版吗?还是应该是未缩小的? module 呢?我猜这个模块不应该被缩小,因为用户将使用它的捆绑器(Webpack、Parcel 等),并且通过使用带有 ES6 模块导出的源文件,捆绑器可以进行 tree-shaking,对吗?
猜你喜欢
  • 1970-01-01
  • 2018-03-20
  • 2020-08-07
  • 2021-10-25
  • 2022-12-29
  • 2018-07-28
  • 1970-01-01
  • 2023-01-17
  • 1970-01-01
相关资源
最近更新 更多