如何压扁发布的NPM模块的文件结构

我有一个TypeScript项目,我作为一个NPM模块发布。 编译项目的输出在{mymodule}/dist/src/... ,这意味着当我发布时,NPM模块也采用上述文件结构。

这样做的缺点是需要单个模块时,它看起来像这样:

 var individualModule = require('/dist/src'); 

我想扁平化已发布模块的输出,其中已发布模块中的文件将是{mymodule}/...而不是{mymodule}/dist/src/...

在我看来,这样做的正确方法是通过在根文件中的module.exports (或import/export )从你的包有意地暴露模块。

 const exposableOne = require('/dist/src/ex-1.js'); const exposableTwo = require('/dist/src/ex-2.js'); // ... module.exports = { mymodule, exposableOne, exposableTwo }; 

你可以看看主要的Express框架文件 – 他们使用exports.来做几乎相同的事情exports. 指示。

不完全是TypeScript的东西,但想法是相当普遍的。

更新:

如果你确实需要通过require/exports来做到这一点,那么你可以使用符号链接的方法。 我不确定这个选项在所有平台上都能正常工作,但是对于一个例子,你可以在GitHub上检查这个解决的问题和这个库 。 后者中的aliases目录包含符号链接到recipes目录模块的文件。