如何使用共享库“ npm link” Angular库?

Nir*_*mir 8 node-modules npm-install npm-link ngx-translate angular

对于我的Angular 4.x应用程序(App),我编写了一个当前不兼容AoT的库(例如“ Lib”)。

App和Lib都依赖于第三方库(例如“ X”)。当我使用“ npm link ”在App中开发Lib时,由于X现在同时位于App / node_modules和Lib / node_modules中,因此某些事情停止了工作,并且在运行时似乎从X提供了多个提供者。当我从X中删除X时Lib / node_modules一切正常。我怀疑这是提供者的一般限制,与X无关,但是在我的情况下,X实际上是ngx-translate。

我发现“最干净”的解决方法是仅对App而不是对Lib运行“ npm install”。这样,大多数依赖项(包括X)仅存在于App node_modules中,并且应用程序可以正常运行。但是,这会在开发Lib时导致IDE问题:1)如果我在Lib的项目上工作,它将丢失依赖项,并且没有智能感知(例如,它不会构建)。2)如果相反,我是从App的项目中开发Lib(直接在node_modules \ Lib上),则它没有正确的版本控制集成(例如,我无法检出)。

非常感谢!