使用子文件夹发布 es6 和 commonjs

Publishing both es6 and commonjs with subfolders

我可以在 package.json.

中用 "main": "./index.js" 指定 commonjs 的主文件,用 "module": "./index.es.js" 指定 es6 的主文件

但是当我导入 my-package/myfile 时它是如何工作的?是使用myfile.js还是myfile.es.js

为什么不能指定子文件夹而不是单个主文件?

你提到的那个博客 post 并没有什么神奇的东西,他只是要求 node_modules/his-module/P.js

捆绑器需要一个条目,因为(理论上)这是您拥有

的地方
module.exports = {}

让捆绑器访问您的功能的代码。

如果您使用的是与 esmodule 兼容的捆绑器,例如 webpack 或 rollup,它们将读取 module

import someFunction from 'your-module';

将导入 es 模块,除非你使用像 browserify 这样的东西,它会采用 commonjs 版本。

您也可以明确请求不同的文件

import someFunction from 'your-module/lib/index.min.js';

无论您在此处请求什么文件,它都会导入该文件。如果您在 your-module 之后添加 /,您现在将打破主路径或模块路径约定,并询问您想要的任何文件。