【问题标题】:requiring a dependency of a linked npm module does not work?需要链接的 npm 模块的依赖项不起作用?
【发布时间】:2018-05-28 21:33:51
【问题描述】:

我的本​​地模块 A 使用 npm link 链接到本地​​模块 B。 并且模块 B 已作为依赖项做出反应。 当模块 A 需要 react 时,找不到该模块。

如果这被视为“普通”包(没有 npm 链接),模块 A 在安装模块 B 时会在 node_modules 下做出反应。

在使用npm link 时,有什么方法可以要求模块 A 做出反应,而无需手动将其列为依赖项?

【问题讨论】:

  • 您是说您想在模块A 中使用react 而不明确将其声明为依赖项?
  • 是的,如果模块 B 是一个正常的发布模块,情况就是这样

标签: node.js npm dependencies


【解决方案1】:

简答:不。

更长的答案: npm link 只是在模块 A 的 node_modules 中通过全局文件夹创建到模块 B 的符号链接。它没有像npm install 那样提供任何依赖关系解析/安装/扁平化。例如,如果您同时在模块 A 和 B 上开发,这很有用;更改模块 B 中已安装的包不需要重新解析/安装/展平 A 中的包树。

在运行 A 时,您可能会弄乱您的 NODE_PATH 环境变量以将模块 B 的 node_modules 指定为您的 requires 的源,并在 A 中有效地使用 B 的依赖项。

但是,请重新考虑为什么要创建这样的不可见依赖项。您选择打破模块的封装。如果模块 A 需要 react,则 A 需要在 package.json 中指定。当您后来决定将模块 A 用于不包含 B 的其他项目时,就没有问题了。当您决定从模块 B 中删除 react 时,您不会破坏 A。

【讨论】:

    猜你喜欢
    • 2019-09-17
    • 2016-04-22
    • 1970-01-01
    • 2013-09-02
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多