gpt4 book ai didi

javascript - `npm install` 未安装本地包子依赖项

转载 作者:行者123 更新时间:2023-12-03 03:40:04 25 4
gpt4 key购买 nike

我有一个包 (package-a),它依赖于另一个包 (package-b),该包未发布到 npm,但位于我的文件系统上。当我从 package-a 运行 npm install 时,package-b 的依赖项未安装。我必须导航到 package-b 的目录并手动运行 npm install 。有没有办法使用单个 npm 命令安装两个包的依赖项?

这是我的目录结构:

/
...
shared/
...
javascript/
...
package-b/
package.json
package-a/
package.json

the docs ,我将以下内容放入 package-a/package.json 中。 (我使用的是 npm 5+)

dependencies: {
package-b: "file:../shared/javascript/package-b",
}

当我导航到 /package-a 并运行 npm install 时,它会像正常情况一样安装 package-a 的所有依赖项还将 package-b 目录复制到 package-a/node_modules。这大概就是让我输入 require('package-b') 而不是 require('../shared/javascript/package-b') 的原因。

但是,正如我之前所说,package-b 的依赖项尚未安装,因此,如果我尝试使用 package-a,我会在 时收到错误>package-brequired,因为它尝试使用本地不存在的依赖项。

再一次,为了解决这个问题,我可以导航到 package-b 并运行 npm-install,但我希望有一个更好的解决方案,因为我可能有很多这样的子包,如果我可以使用 npm 命令来安装所有依赖项,我希望避免编写 shell 脚本来安装所有依赖项。 (也许我只是做错了什么,npm install应该可以工作?)

<小时/>

后续问题:当我从 package-b 目录运行 npm install 时,软件包安装在那里,但不是安装在 package 的版本中-b 在第一次 npm install 期间被复制到 /package-a/node_modules,但一切仍然有效。所以现在看来​​,当我 require('package-b') 时,它实际上解析为 /shared/javascript/package-b 而不是 /package- a/node_modules/package-b。那么首先复制文件有什么意义呢?

<小时/>

更新

事实证明,这是 npm 5 中的一个错误。它仅在从 package-lock.json 文件安装时才会发生。 (Github Issue)

最佳答案

这些文件(可能)没有被复制,它们被符号链接(symbolic link)(符号链接(symbolic link))。这本质上创建了一个看起来像真实目录的别名/快捷方式,但指向另一个路径。

这就是旧的 npm link 功能的工作原理。原因是代码保持“事件”状态;每当您运行引用它们的模块时,链接模块中的更改都会反射(reflect)出来,这意味着您不必始终npm update

关于javascript - `npm install` 未安装本地包子依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45664980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com