如果它放在本地,如何避免将包添加到node_modules

问题描述 投票:0回答:1

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

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

yarn install之后,依赖加入了node_modules

我想制作基于模块的应用程序。 app文件夹重现根模块。其他模块如admin-panel-moduleaccount-module应该在modules文件夹中。因此,app里面可能有node_modules,但也有modules文件夹的模块。这些模块将由git subtree从另一个回购添加。所以,这种方式我可以独立发展

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

npm yarnpkg
1个回答
1
投票

Multiple node_modules and 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 install ofc)时,其本地package.json中列出的依赖项将安装在本地node_modules文件夹中。

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

但是,您可以将常见依赖项放在根app文件夹中。如果您的所有项目都使用lodash,则可以将lodash依赖项放在add的package_json中。在yarn文件夹中执行app之后,lodash包将安装在应用程序的node_modules中。

之后,如果您:

require('lodash');

在任何一个孩子中,他们会在应用程序的lodash文件夹中搜索node_modules,如果他们在自己的lodash中找不到node_modules

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

所以也许你可能想要避免常见的依赖关系,或者你想在app文件夹中存储公共依赖项。 Npm你有两种方式。

但是,如果你不想处理常见的依赖关系,但是担心必须在本地机器中存储大量重复的包,你可能需要to checkout pnpm,它是npm的包装器,它允许在本地节省大量空间开发机器。

© www.soinside.com 2019 - 2024. All rights reserved.