设想
- 我在用
npm 5.8.0
- 我有一个
ProjectA
和一个ProjectB
ProjectB
是一个依赖ProjectA
- 这两个项目都通过 Webpack 捆绑和运行(如果需要,我可以提供我的配置)。
出于开发目的,我ProjectB
在ProjectA
package.json 中通过"projectB": "file:../projectB"
. 基本上我需要的唯一文件在lib
Webpack 输出的文件夹中。
问题
如果我使用上述配置安装此依赖项,npm 会将整个ProjectB
-folder 安装到 node_modules 中。它将包含所有projectB
的 node_modules、配置文件、src 文件夹等。
除了这不是预期的行为之外,这还会导致错误。例如,一些已安装的@types 会抛出错误,因为它们被认为是重复的。@types 和其他包ProjectA
似乎ProjectB
“碰撞”。"dependencies"
这些包在两者中都被引用,ProjectA
并且ProjectB
大部分被引用。
我试过的
npm 链接
如果我使用 npm 链接,则会出现相同的(见上文)行为。整个文件夹将安装到ProjectA
's node_modules.
npm 包
我实际上确实有一个-file in可能很重要。所以当我使用一个文件时就生成了。如果我然后通过一切正常安装。我认为确实考虑了-file 。.npmignore
ProjectB
npm pack
projectB.tgz
ProjectB
"projectB": "file:../projectB.tgz"
npm pack
.npmignore
我对这个解决方案的问题是,我不仅必须在ProjectB
每次对其应用更改时进行构建,而且还要npm pack
对其进行构建。
删除ProjectB
的 node_modules
我想这是最愚蠢的解决方法。如果我再次引用ProjectB
via"projectB": "file:../projectB"
但在构建它之后删除它的 node_modules,它们在安装后不会出现。因此,我不再有任何例外。
我想这也不是一个有效的解决方案,因为仍在ProjectB
安装整个 -folder。
问题
这里的最佳做法是什么?什么是从本地来源安装ProjectA
的合理配置?ProjectB
ProjectB