包装子模块与汇总节点
问题描述:
我有一个它是由许多子模块库(ES6),说包装子模块与汇总节点
- package.json
- lib
- my_package
- file1.js
- file2.js
- sub_module1
- file3.js
- file4.js
我现在做进口这样的(我所有的包内 - 使用文件解析找,不node_modules分辨率):
import {func1} from 'lib/my_package/file1'
import {func3} 'lib/my_package/sub_module1/file3'
因此,在实践中我有跨越的子目录许多文件。
我现在试图打包和发布我的库,它将被安装在node_modules下。
在我看来,该节点分辨率算法(后面node_modules时),只允许一个单一的入口点(并没有什么汇总可以做的事情)
我希望能够包括很多子目录和文件,并单独解决它们。
据我所知,我必须包括一个单一的顶层文件,其中包含所有export from
机器。我只能导入该单个*文件。这意味着不得不手动创建该文件。这也意味着丢失来自目录结构的所有子模块名称结构。
我想知道:有什么办法可以直接从node_module导入任何其他文件吗?
答
节点的分辨率算法只解决了一个模块源的第一部分,因此,如果有人做这个...
var foo = require('your-library/subdir/foo.js');
...然后节点(或Browserify /的WebPack /汇总-插件节点,决心)将正确解析到
/path/to/project/node_modules/your-library/subdir/foo.js
棘手的部分是要编写的JavaScript模块,但如果有人在节点中使用您的库,然后他们需要CommonJS的模块。 Rollup无法帮助您 - 您需要为每个模块执行一对一的ESM-> CJS转换。所以这意味着要么使用Babel,要么首先创作CommonJS模块。
的确,这是正确的。我想补充一点,package.json不应该有一个主条目。 –