首页 > 解决方案 > 如果将包放在本地,如何避免将包添加到 node_modules

问题描述

我有应用程序和模块的存储库。模块包含在应用程序中,package.json如下所示:

"application-module": "file:../modules/application-module"

yarn install该依赖项添加到node_modules.

我想制作基于模块的应用程序。app文件夹重现根模块。其他模块,如admin-panel-moduleaccount-module应该在modules文件夹中。因此,应用程序可能有node_modules内部,但也modules有模块的文件夹。这些模块git subtree将从另一个仓库添加。所以,这样我就可以独立开发了

有什么方法可以避免添加和使用本地目录?

标签: npmyarnpkg

解决方案


多个 node_modules 和 package.json

在任何 node/npm 项目中,您可以package.json在目录树中拥有多个,例如:

app/
  package.json
  node_modules
  src...
  account_module/
    package.json
    node_modules
    src...
  admin_module/
    package.json
    node_modules
    src..

当您在任何子模块上调用yarn(或npm installofc)时,其本地列出的依赖项package.json将安装在本地 node_modules 文件夹中。

所以基本上你可以解决你的问题,确保每个孩子都有自己package.json的依赖关系。

不过,您可以将公共依赖项放在根app文件夹中。例如,如果您的所有项目都使用lodash,则可以将lodash依赖项放在添加的package_json. yarnapp文件夹中执行后,该lodash包将安装在应用程序的node_modules.

之后,如果您:

require('lodash');

在任何一个孩子中,如果他们没有lodash在自己的.node_moduleslodashnode_modules

如果您没有 root node_modules,您仍然可以package.json为任何子模块声明一个本地,并且它们将拥有自己的node_modules.

因此,也许您可​​能想要完全避免公共依赖项,或者您可能希望将公共依赖项存储在app文件夹中。Npm 你已经涵盖了这两种方式。

但是,如果您不想处理常见的依赖项,但又担心必须在本地机器中存储大量重复的包,您可能需要检查 pnpm,它是 npm 的包装器,可以节省大量空间在本地开发机器中。


推荐阅读