为子节点打包子模块

我有一个库(ES6),这是在许多子模块组成,说

- package.json - lib - my_package - file1.js - file2.js - sub_module1 - file3.js - file4.js 

我目前做这样的导入(所有在我的包 – 使用文件分辨率find,而不是node_modules分辨率):

 import {func1} from 'lib/my_package/file1' import {func3} 'lib/my_package/sub_module1/file3' 

所以,实际上我有许多子目录中的文件。

我现在试图打包和发布我的库,它将被安装在node_modules下。

在我看来,节点parsingalgorithm(当在node_modules后面)只允许一个入口点(并且没有任何汇总可以做到这一点)

我想能够包括许多子目录和文件,并为他们分别解决。

据我了解,我必须包括一个单一的顶层文件,所有的机械export from 。 我只能导入该单个顶级文件。

这意味着必须手动创build该文件。 这也意味着丢失来自目录结构的所有子模块名称结构。

我想知道:有什么办法可以直接从node_module导入任何其他文件?

节点的parsingalgorithm只解决模块源的第一部分,所以如果有人这样做…

 var foo = require('your-library/subdir/foo.js'); 

…然后Node(或Browserify / Webpack / rollup-plugin-node-resolve)将正确parsing为

 /path/to/project/node_modules/your-library/subdir/foo.js 

棘手的部分是你想编写JavaScript模块,但是如果有人在Node中使用你的库,那么他们需要CommonJS模块。 汇总无法帮助您 – 您需要为每个模块执行一对一的ESM-> CJS转换。 所以这意味着要么使用Babel,要么首先创作CommonJS模块。