我正在开发两个repos,一个是另一个的依赖。我在上午5点。我将package.json
main-repo
中的依赖关系指定为../dependent-repo
。当我执行npm install
时,会在dependent-repo
中为main-repo/node_modules
创建符号链接,指向../../dependent-repo
。
问题是dependent-repo
下面有node_modules
,所以当我在其依赖项之一中引用(需要或导入)某些内容时,默认解析过程解析为dependent-repo/node_modules
中的依赖关系,而不是main-repo/node_modules
中的依赖关系。
这对TypeScript来说是一个问题,因为显然它认为main-repo/node_modules/@angular/core
与dependent-repo/node_modules/@angular/core
不同,即使它们是相同的版本,并且逐字节相同。这会导致形式的TS错误
类型的参数' ViewContainerRef'不能分配给' ViewContainerRef'。
类型的参数
我熟悉这个问题,因为当我使用npm link
时,npm v3也发生了这个问题。这个问题已经在TS问题列表中进行了广泛讨论,但据我所知,没有解决方案。我希望npm v5能以某种方式神奇地解决这个问题,但到目前为止还没有运气。
我尝试将依赖项指定为file://../dependent-repo
,但这也只是创建了相同的符号链接(至少在npm5中;我似乎记得在早期版本中如果可能已经复制了目录锁,库存和桶)。
目前我能看到的唯一解决方法是将依赖关系指向github服务器,然后提交并推送我所做的每一个更改,并在主repo上重新运行npm install
以引入最新的变化。这正是我试图避免的。
我想在测试dependent-repo/node_modules
之前暂时重命名main-repo
,因此在解析过程中省略了它。但是,这显然要求dependent-repo
上存在main-repo
的所有依赖关系。
我尝试使用paths
选项tsconfig.json
(在main-repo
中)玩了一下,并且对paths: {"*": ["node_modules"]}
之类的内容感到幸运,但无法做到让它完全发挥作用。
我知道angular-cli
可能对其内部webpack配置进行了一些更改以使其更好地工作,但不幸的是我的main-repo
使用了较旧的webpack构建过程,而我无法做出一些resolve: {fallback: [path.join(__dirname, 'node_modules')]}
或resolve: { modules: [ path.join(__dirname, "node_modules") ] }
等建议的更改对我有效。
答案 0 :(得分:0)
您可以在dependent
repo中向git添加新的遥控器,但新的“遥控器”将位于本地盒子的某个位置。这样,您可以执行git push <remote-name> <branch>
并将main
回购中的回购网址指向您的遥控器。
[git how to add a local repo and treat it as a remote one
这是一个hacky解决方案,但与几个makefile一起使用时应该减轻一些痛苦。