【发布时间】:2014-10-16 13:54:40
【问题描述】:
我是 Node/Angular 世界的新手(来自 Ruby),我只是想知道...
为什么 npm 默认会在项目本地安装模块?
我同时使用了 yeoman.io 和 mean.io 创建了两个独立的项目,在这两种情况下,它们最终都将一大堆文件夹添加到项目的 node_modules 目录中,用于 grunt 和 karma 和 express 等等东西。我知道您可以将文件夹添加到 .gitignore,但这并不能改变您的计算机上可能会有一大堆相同库的重复实例的事实。
为什么默认将包添加到本地项目目录?有没有办法强制 npm 默认全局安装而不是本地安装?
注意:在 Ruby 世界中,gem(相当于npm)通过自动生成“锁定文件”来跟踪安装了哪个特定版本。这允许人们完全控制每个项目的依赖版本。我开始怀疑 npm 不全局安装的唯一原因是否是因为它没有“锁定文件”来跟踪应用程序正在使用哪些特定的子版本。
【问题讨论】:
-
请注意,
npm没有具有特定应用程序版本的锁定文件,但package.json能够设置特定或与 semver 兼容的版本,如果 lib 遵循 semver,则允许自动升级.