Javascript `npm install`未安装本地软件包';s子依赖项
我有一个包(Javascript `npm install`未安装本地软件包';s子依赖项,javascript,node.js,npm,npm-install,Javascript,Node.js,Npm,Npm Install,我有一个包(package-a),它依赖于另一个包(package-b),该包未发布到npm,但在我的文件系统中。当我从package-a运行npm install时,package-b的依赖项未安装。我必须导航到package-b的目录并手动运行npm install。有没有办法用一个npm命令安装两个包的依赖项 以下是我的目录结构: / ... shared/ ... javascript/ ... package-b/ pac
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
根据,我将以下内容放在package-a/package.json
中。(我正在使用npm 5+)
当我导航到/package-a
并运行npm install
时,它会像普通一样安装所有package-a
的依赖项,并将package-b
目录复制到package-a/node\u模块中。这大概就是让我键入require('package-b')
而不是require('../shared/javascript/package-b')
的原因
但是,正如我前面所述,package-b
s依赖项未安装,因此如果我尝试使用package-a
,当package-b
为require
d时,我会收到一个错误,因为它试图使用本地不存在的依赖项
再一次,为了解决这个问题,我可以导航到package-b
并运行npm install
,但我希望有更好的解决方案,因为我可能有很多这样的子包,如果我可以用npm命令来完成这项工作,我希望不必编写shell脚本来安装所有依赖项。(也许我只是做错了什么,npm安装
应该可以正常工作了?)
后续问题:当我从package-b
目录运行npm安装时,软件包安装在那里,但不是在第一次npm安装期间复制到/package-a/node_模块的package-b
版本中,但一切仍然正常。所以现在,当我require('package-b')
时,它实际上是解析为/shared/javascript/package-b
,而不是/package-a/node\u modules/package-b
。那么,复制文件首先有什么意义呢
使现代化
原来这是NPM5中的一个bug。它仅在从包锁.json
文件安装时发生。()文件(可能)没有被复制,而是被符号链接(symlink)。这实际上创建了一个别名/快捷方式,看起来像一个真实的目录,但指向另一个路径
这就是旧的npm链接
功能的工作原理。原因是代码保持“有效”;无论何时运行引用链接模块的模块,链接模块中的更改都会反映出来,这意味着您不必一直更新npm。这回答了我的第二个问题(谢谢),但不是我的第一个问题。事实证明,有问题的行为是由npm中的错误引起的。我现在接受这个答案,因为它回答了我的第二个问题。
dependencies: {
package-b: "file:../shared/javascript/package-b",
}