包装子模块与汇总节点

问题描述:

我有一个它是由许多子模块库(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模块。

+0

的确,这是正确的。我想补充一点,package.json不应该有一个主条目。 –