【问题标题】:My Node package requires two packages that both have the same dependencies. That ok?我的 Node 包需要两个具有相同依赖项的包。可以吗?
【发布时间】:2012-09-27 04:37:50
【问题描述】:

我的节点包目前需要expresslocomotiveexpresslocomotive 都需要 commander 包。

当每个包(expresslocomotive)都需要指挥官时,这将解析为两个不同的文件。基于Node's documentationcommander 包将执行两次,在我的应用程序中,commander 包将有两个主副本,每个文件一个。

现在,根据我对require.resolve() 的理解,require() 将搜索目录树一直到机器的根目录(或直到用户允许的范围内),并查看每个目录./node_modules/commander 的方式。

然后我应该将commander 包(和所有其他重复的包)合并到我的应用程序根目录下的node_modules 文件夹中吗?

编辑 12:58 p.m.:我还注意到重复的包可能不是同一版本。 expresscommander 0.6.1locomotivecommander 1.0.4。另一个依赖 expresslocomotive 共享是 mkdirp,分别位于 0.3.30.3.4

【问题讨论】:

    标签: node.js package npm


    【解决方案1】:

    每个包在安装时都会在各自的node_modules 文件夹中安装自己的依赖项。

    例如,express 将拥有它自己的 node_modules 文件夹,其中包含 commander 的特定版本,而另一个模块将拥有它自己的。

    确认;

    mkdir someNewProject && cd someNewProject
    npm install express locomotive
    

    然后用类似这样的方式查看那些已安装模块的目录结构;

    ls node_modules/express
    ls node_modules/locomotive
    

    您应该注意到它们每个都有自己的 node_modules 文件夹及其依赖项。因此,我不建议尝试制作通用指挥官包。

    【讨论】:

    • 是的。这就是npm 的工作方式,简单的npm install -d 一次安装所有依赖项:)
    猜你喜欢
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    相关资源
    最近更新 更多