为什么 npm 在本地安装包?

Why does npm install packages locally?

这更像是一个设计问题,可能不属于这里(请告诉我)。据我了解,大多数语言都将它们的依赖项安装在一个通用的 space ( /usr/local/ ... ) 中,或者使用一些项目/环境特定的隔离(不同的文件夹来保存不同的版本)。 npm 创建者在本地安装依赖项的想法是什么?可能考虑了哪些利弊?这一决定对当前形势有何影响?

What was the thought process of npm creators to install dependencies locally?

喜欢你难过different folders to hold different versions.

What pros and cons might have been considered?

专业版:

  • 同一台机器上的多个项目可以轻松隔离依赖关系。

    如果您选择 pip(对于 Python),您将需要设置一个 virtual-env 如果您想在同一个平台上管理多个项目 主持人。 virtual-env抽象环境变量实现 npm 对文件夹有什么影响。

反对意见:

  • 项目之间不会共享相同版本的依赖。
  • 环境管理 - 如果您不小心,有时 dev-dependencies(工具)会找到通往正常依赖项的途径。

How has this decision affected the current landscape?

我不会说那场比赛。现在使用 docker 创建隔离环境的日子比以往任何时候都更容易。这意味着在生产中 docker 容器是隔离的。

关于开发环境,越来越多的开发人员正在转向 docker dev-container,这使得隔离问题已过时。