我正在开发两个存储库,一个依赖于另一个。我在 npm v5 上。我在as中指定依赖package.json
项。当我这样做时,这会为in创建一个符号链接,指向.main-repo
../dependent-repo
npm install
dependent-repo
main-repo/node_modules
../../dependent-repo
问题是它下面dependent-repo
有它自己的东西,所以当我在它的node_modules
依赖项之一中引用(需要或导入)某些东西时,默认解析过程会解析为 in 的依赖,而不是 in 的依赖。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
. 该问题已在 TS 问题列表中进行了广泛讨论,但据我所知没有解决方案。我希望 npm v5 能以某种方式神奇地解决这个问题,但到目前为止还没有运气。
我尝试将依赖项指定为file://../dependent-repo
,但这也只是创建了相同的符号链接(至少在 npm5 中;我似乎记得在早期版本中,如果可能复制了目录锁、库存和桶)。
目前我能看到的唯一解决方法是让依赖项指向 github 服务器,然后提交并推送我所做的每一个更改,然后npm install
在主 repo 上重新运行以引入最新的更改。这正是我试图避免的。
dependent-repo/node_modules
在测试之前想到了临时重命名main-repo
,所以在解析过程中省略了。但是,这显然需要 的所有依赖项dependent-repo
都存在于main-repo
.
我尝试使用(in ) 的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") ] }
为我工作。