设想
- 我在用
npm 5.8.0 - 我有一个
ProjectA和一个ProjectB ProjectB是一个依赖ProjectA- 这两个项目都通过 Webpack 捆绑和运行(如果需要,我可以提供我的配置)。
出于开发目的,我ProjectB在ProjectApackage.json 中通过"projectB": "file:../projectB". 基本上我需要的唯一文件在libWebpack 输出的文件夹中。
问题
如果我使用上述配置安装此依赖项,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 。.npmignoreProjectBnpm packprojectB.tgzProjectB"projectB": "file:../projectB.tgz"npm pack.npmignore
我对这个解决方案的问题是,我不仅必须在ProjectB每次对其应用更改时进行构建,而且还要npm pack对其进行构建。
删除ProjectB的 node_modules
我想这是最愚蠢的解决方法。如果我再次引用ProjectBvia"projectB": "file:../projectB"但在构建它之后删除它的 node_modules,它们在安装后不会出现。因此,我不再有任何例外。
我想这也不是一个有效的解决方案,因为仍在ProjectB安装整个 -folder。
问题
这里的最佳做法是什么?什么是从本地来源安装ProjectA的合理配置?ProjectBProjectB