使用子文件夹发布 es6 和 commonjs
Publishing both es6 and commonjs with subfolders
- 我希望能够像这样从子文件夹中导入模块,而无需任何
lib
文件夹,https://davidwells.io/blog/publishing-flat-npm-packages-for-easier-import-paths-smaller-consumer-bundle-sizes/
- 我想同时发布 CommonJS 和 ES6 模块
我可以在 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 之后添加 /
,您现在将打破主路径或模块路径约定,并询问您想要的任何文件。
- 我希望能够像这样从子文件夹中导入模块,而无需任何
lib
文件夹,https://davidwells.io/blog/publishing-flat-npm-packages-for-easier-import-paths-smaller-consumer-bundle-sizes/ - 我想同时发布 CommonJS 和 ES6 模块
我可以在 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 之后添加 /
,您现在将打破主路径或模块路径约定,并询问您想要的任何文件。