Npm 作为依赖项的本地回购
我正在开发两种回购协议,一种依赖于另一种。我在npm v5上。我将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_模块中的依赖项,而不是
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?那些是什么?