为什么我们在每个项目中需要多个节点模块文件夹?

Why do we need multiple node modules folders inside each project?

我是 JS 开发的新手,我想知道节点模块的大小是一个值得关注的问题,当许多项目堆积起来并且不使用时,甚至不得不继续删除文件夹,为什么不能'我们是否有一个全局节点模块文件夹,例如 Maven 的 m2,然后在我们的项目中引用它?

为什么我们在每个项目中需要多个节点模块文件夹?

可以全局安装包并在使用npm install时使用它们with the -g flag

但这并不经常进行,而且通常也不推荐这样做,因为同一个包可以有很多很多不同的版本。 SomeLibrary 5.6.1 版可能与 SomeLibrary 5.7.1 版有很大不同。如果您有多个项目,它们通常会有不同的依赖项和不同的依赖项版本。如果您尝试从 same 全局安装中获取它们,您通常很快就会 运行 遇到问题。每个项目都有一个单独的 node_modules 文件夹可以为您解决这个问题;通常,您拥有的每个项目的包版本控制将“正常工作”而无需任何额外配置。

还有像Yarn这样的管理器可以缓存包下载,所以你不会在多个项目中重新下载大量重复的兆字节

各种原因。仅供参考,您可以在安装时使用 -g 标志全局安装 npm 包。

原因如下:

  1. 不同的项目可能需要不同版本的包。
  2. 一台机器可以包含多个不同的环境,即 容器或虚拟机。
  3. 在 projects/environments 之间共享代码会引入潜在的安全风险。
  4. 由于上述原因以及其他原因,您可能实际上并不想要一个项目 包离开该项目的范围。

由于 java 脚本未编译,我们需要在每个部署中编译所有插件,因为 Maven 已编译,因此我们可以将其编译为机器代码并安装全局插件