【问题标题】:npm link multiple local (inter-dependant) modulesnpm 链接多个本地(相互依赖)模块
【发布时间】:2014-10-17 10:31:56
【问题描述】:

我有 3 个 node.js 模块,ABC。所有这些都是私人 git 存储库。 A 依赖于 B 依赖于 C。 Git 克隆 A 并执行 npm install 就像一个魅力。

但是在模块A 上编码时,我也想在B(和C)上工作。后两者也是 git 克隆的。 npm link ../pathto/B 效果很好。

由于B 依赖于Cnpm link 负责将C“安装”到B/node_modules/C。它是一个静态文件克隆,被B 使用。

所以在执行npm link ../pathto/C 时,它会导致A/node_modules/C(作为符号链接)。

但是,这就是问题所在,B 将使用 C 的静态克隆,而不是我链接到 A/node_modules/C 的内容。

A/
    ...
    node_modules/
        B -> B/
        C -> C/
B/
    ...
    node_modules/
        C/
            ...
C/
    ...

有没有人想办法解决这个问题?

【问题讨论】:

    标签: node.js module dependencies npm


    【解决方案1】:

    我解决了它,或者至少我得到了它的工作。

    npm install 之后,我执行npm link _node_modules/*(_node_modules 是我的本地模块BC 所在的目录)。

    到目前为止,B 已按计划获得所需。但B 仍会加载其静态C 引用。

    然后我只需 cd_node_modules/B/node_modules 并执行 npm link C

    【讨论】:

      【解决方案2】:

      对我来说很简单

      npm link A B C
      

      有效。使用 npm 7.5.2

      当然,包要先暴露,所以

      sudo npm link
      

      必须在每个包的目录中运行。

      这确实需要package.json 的一些技巧:在安装新软件包期间,必须从需求中隐藏对本地模块的依赖(或者可能指定为路径,但我还没有足够的知识)。之后,需要再次链接本地包。它们还必须始终使用一个命令链接,否则 npm 将简单地删除丢失的命令。

      2021 年 11 月 8 日更新:

      我正在使用 Vue,上述解决方案导致我的构建中有多个 Vue 实例。似乎每个链接的模块都忽略了导入模块的“正常”方式,并分别进行了自己的导入。

      所以现在我在库中使用 npm pack 并在使用项目作为文件依赖项时指定依赖项 "my_package_name": "file:/tmp/my_package_name-x.y.z.tgz",

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-06
        • 2014-08-12
        • 2019-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-19
        相关资源
        最近更新 更多