Javascript 使用节点的汇总功能打包子模块

Javascript 使用节点的汇总功能打包子模块,javascript,node.js,rollupjs,Javascript,Node.js,Rollupjs,我有一个库(ES6),它由许多子模块组成,比如 - package.json - lib - my_package - file1.js - file2.js - sub_module1 - file3.js - file4.js 我目前进行类似的导入(所有导入都在我的包中-使用文件解析查找,而不是节点\模块解析): 因此,在实践中,我有许多跨子目录的文件 我现在正在尝试打包和发布我的库,它将安装在node_模块下 在我看来,节点解析算法(在

我有一个库(ES6),它由许多子模块组成,比如

- package.json
- lib
  - my_package
    - file1.js
    - file2.js
    - sub_module1
      - file3.js
      - file4.js
我目前进行类似的导入(所有导入都在我的包中-使用文件解析查找,而不是节点\模块解析):

因此,在实践中,我有许多跨子目录的文件

我现在正在尝试打包和发布我的库,它将安装在node_模块下

在我看来,节点解析算法(在节点_模块后面时)只允许一个入口点(而汇总无法做到这一点)

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

据我所知,我必须包含一个顶级文件,其中包含从机器导出的所有
。我只能导入单个顶级文件

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


我想知道:是否有任何方法可以直接从节点模块导入任何其他文件?

节点的解析算法只解析模块源的第一部分,因此如果有人这样做

var foo=require('your-library/subdir/foo.js');
…然后节点(或Browserify/Webpack/rollup插件节点解析)将正确解析为

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

棘手的部分是您想要编写JavaScript模块,但是如果有人在节点中使用您的库,那么他们需要CommonJS模块。汇总在这里帮不了你-你需要对每个模块进行一对一的ESM->CJS转换。因此,这意味着要么使用Babel,要么首先创作CommonJS模块。

事实上,这是正确的。我想补充一点,package.json不应该有主条目。
/path/to/project/node_modules/your-library/subdir/foo.js