使用 rollup.js package.json 中的 pkg.module (.esm.js) 有什么意义
Whats the point of pkg.module (.esm.js) in package.json using rollup.js
看完这两个帖子后:
https://2ality.com/2017/04/setting-up-multi-platform-packages.html https://github.com/rollup/rollup/wiki/pkg
我仍然不清楚导出 ESM 模块的意义
"module": "dist/dop.esm.js",
如果我的库是用 ESM 编写的,将它导出到 src 没有意义吗?
"module": "src/index.js",
在某些情况下是的。但是,如果您的源代码分布在多个模块中,则最好将这些模块的捆绑包公开给您的库的使用者。那是因为一些(咳咳)效率较低的捆绑器无法很好地组合这些模块,添加额外的字节。如果您的库要在浏览器中使用,那么浏览器最好可以发出单个请求,而不是对每个源模块发出请求(HTTP/2 仍然如此)。
还有一种情况是您的源代码正在导入需要由 Rollup 插件处理的非 JS 文件(例如 JSON 或 TypeScript)——在库级别处理这种情况要容易得多而不是期望您的图书馆的消费者保持正确的配置。
看完这两个帖子后:
https://2ality.com/2017/04/setting-up-multi-platform-packages.html https://github.com/rollup/rollup/wiki/pkg
我仍然不清楚导出 ESM 模块的意义
"module": "dist/dop.esm.js",
如果我的库是用 ESM 编写的,将它导出到 src 没有意义吗?
"module": "src/index.js",
在某些情况下是的。但是,如果您的源代码分布在多个模块中,则最好将这些模块的捆绑包公开给您的库的使用者。那是因为一些(咳咳)效率较低的捆绑器无法很好地组合这些模块,添加额外的字节。如果您的库要在浏览器中使用,那么浏览器最好可以发出单个请求,而不是对每个源模块发出请求(HTTP/2 仍然如此)。
还有一种情况是您的源代码正在导入需要由 Rollup 插件处理的非 JS 文件(例如 JSON 或 TypeScript)——在库级别处理这种情况要容易得多而不是期望您的图书馆的消费者保持正确的配置。