【发布时间】:2017-08-13 21:15:20
【问题描述】:
我有一个包 (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-bs 依赖项没有安装,所以如果我尝试使用 package-a,当package-b 是 required 时我会收到错误,因为它正在尝试使用本地不存在。
再一次,为了解决这个问题,我可以导航到 package-b 并运行 npm-install,但我希望有更好的解决方案,因为我可能有很多这样的子包,我想避免编写如果我可以使用 npm 命令来安装我的所有依赖项,则需要一个 shell 脚本。 (也许我只是做错了什么,npm install 应该可以工作?)
后续问题:当我从package-b 的目录运行npm install 时,软件包安装在那里,但不是在第一个npm install 期间复制到/package-a/node_modules 的package-b 版本中,但一切仍然有效。所以现在看起来当我require('package-b') 它实际上解析为/shared/javascript/package-b 而不是/package-a/node_modules/package-b。那么首先复制文件有什么意义呢?
更新
事实证明这是 npm 5 中的一个错误。它仅在从 package-lock.json 文件安装时发生。 (Github Issue)
【问题讨论】:
-
请检查:stackoverflow.com/a/59766644/1951947 使用 npm pack 对我有用! :)
标签: javascript node.js npm npm-install