Npm 作为依赖项的本地回购

Npm 作为依赖项的本地回购,npm,node-modules,npm-link,Npm,Node Modules,Npm Link,我正在开发两种回购协议,一种依赖于另一种。我在npm v5上。我将main repo的package.json中的依赖项指定为。/dependent repo。当我执行npm安装时,这将在主repo/node_模块中为从属repo创建一个符号链接,指向。/../dependent repo 问题是,dependent repo的下面有自己的node_模块,因此当我在其中一个其依赖项中引用(要求或导入)某个内容时,默认的解析过程会解析为dependent repo/node_模块中的依赖项,而不是

我正在开发两种回购协议,一种依赖于另一种。我在npm v5上。我将
main repo
package.json
中的依赖项指定为
。/dependent repo
。当我执行
npm安装时
,这将在
主repo/node_模块
中为
从属repo
创建一个符号链接,指向
。/../dependent repo

问题是,
dependent repo
的下面有自己的
node_模块
,因此当我在其中一个依赖项中引用(要求或导入)某个内容时,默认的解析过程会解析为
dependent repo/node_模块
中的依赖项,而不是
主repo/node_模块中的依赖关系

这是TypeScript的一个问题,因为它显然认为
主repo/node_模块/@angular/core
不同于
从属repo/node_模块/@angular/core
,即使它们是相同的版本,并且字节对字节相同。这会导致表格的TS错误

“ViewContainerRef”类型的参数不能分配给“ViewContainerRef”类型的参数

我很熟悉这个问题,因为当我使用
npm-link
时,它也出现在npm v3中。这个问题在TS问题列表中已经被广泛讨论过,但据我所知没有解决方案。我希望NPMV5能以某种方式神奇地解决这个问题,但到目前为止运气不好

我尝试将依赖项指定为
file://../dependent-repo
,但这也只是创建了相同的符号链接(至少在npm5中是这样;我似乎记得在早期版本中,if可能复制了目录锁、库存和桶)

目前,我所能看到的唯一解决办法是将依赖项保留为指向github服务器,然后提交并推动我所做的每一项更改,并在主repo上重新运行
npm install
,以引入最新的更改。这正是我试图避免的

在测试
主repo
之前,我想暂时重命名
相关repo/node_模块
,因此在解析过程中省略了它。然而,这显然要求
从属回购的所有依赖项都出现在
主回购上

我试着在
tsconfig.json
(在
main repo
中)中使用
path
选项,并在
path:{“*”:[“node\u modules”]}
等方面取得了一些成功,但无法完全实现


我知道,
angular cli
可能对其内部网页包配置进行了一些更改,以使其更好地工作,但不幸的是,我的
main repo
使用了较旧的网页包构建过程,我无法进行一些建议的更改,例如
resolve:{fallback:[path.join(u dirname,'node\u modules')]}
解析:{modules:[path.join(\uu dirname,“node\u modules”)]}
为我工作。

您可以在
相关的
repo中向git添加一个新的遥控器,但新的“遥控器”将位于本地框的某个位置。通过这种方式,您可以执行
git push
,并将
main
repo中的repo url指向远程拉取。 [
这是一个黑客解决方案,但当与几个Makefile一起使用时,应该会减轻一些痛苦。

我知道您试图避免基于Git的依赖样式,但它是处理NodeJS子依赖项的最安全的方法,特别是当您的项目增长并将其用作容器和CI时。我将首先使用Git挂钩和NPM实现一些自动化scripts.makefile?那些是什么?