【问题标题】:How to flatten file structure of published NPM module如何展平已发布 NPM 模块的文件结构
【发布时间】:2018-02-22 16:18:23
【问题描述】:

我有一个 TypeScript 项目,我将其作为 NPM 模块发布。编译项目的输出在{mymodule}/dist/src/...目录下,也就是说我发布的时候,NPM模块也是采用上面的文件结构。

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

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

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

【问题讨论】:

    标签: javascript node.js npm node-modules


    【解决方案1】:

    在我看来,正确的做法是通过根文件中的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 framework file - 他们使用exports. 指令做了几乎相同的事情。

    不完全是 TypeScript 的东西,但想法很常见。

    更新:

    如果您确实需要在不通过require/exports 绑定的情况下执行此操作,则可以使用符号链接方法。我不确定此选项是否适用于所有平台,但例如,您可以在 GitHub 上查看 solved issuethis repository。后者中的aliases 目录包含符号链接到recipes 目录模块的文件。

    【讨论】:

    • 这实际上描述了我当前的设置,但不是我想要的设置。通过这种设置,使用我的库的代码必须执行类似var mylib = require('mylib').exposableOne...但这不是我想要的,我希望使用类似var exposableOne = require('mylib/exposableOne')
    猜你喜欢
    • 1970-01-01
    • 2013-02-09
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多