我刚刚设置了一个测试,并尝试npm install express
,即使我的系统上已全局存在express
。令我惊讶的是,它最终没有使用全局版本,而是在本地重新安装版本!它不应该使用全局版本......或者我想每次都使用-g
,即使我只想使用现有的全球版本。否则,在本地安装任何东西的意义何在!?
答案 0 :(得分:2)
在我看来,第一个选项是最好的。简单,清晰,明确。如果你要在一堆不同的项目中重复使用相同的库,那么第二个非常方便
本地安装 -
npm install moduleName
在本地安装并保存在package.json-
中npm install moduleName --save
全球安装 -
npm install moduleName -g
答案 1 :(得分:2)
答案是“不”。它不应该使用您的全球版本。
如果您想使用全球版本,则根本不需要执行npm install
,因为它已经安装。
如果你这样做,那么,显然,你说的是“我想在本地安装到我的项目中”。除此之外:“我想安装其最新版本,除非在我的package.json中使用其他明确指定的版本声明它。”
事实上,实际的问题是:为什么你不想在本地安装项目的依赖?有更多的版本不匹配问题?
正如@anshuman_singh所说,最佳做法是始终执行npm install --save
。
当然,您可以使用全局安装的软件包。它可以方便快速测试代码,您将在几个小时左右后丢弃。
但是,无论如何:如果您没有真的很难磁盘或网络带宽问题,那么在本地安装所有依赖关系将避免您将来遇到太多麻烦。< / p>
另一方面,将这些模块上传到您的代码存储库也是一个坏主意(也许这是您试图避免的),因为对于不同版本的节点,如果不重建,大多数本机模块将无法工作。但是大多数VCS支持忽略不能上传的文件和/或目录。
例如,在git(.gitignore文件)中:
**/node_modules
总结:
npm init
(如果你还没有)。npm install --save
表示所有项目依赖项。npm install --save-dev
表示生产中不需要的依赖项(测试内容)。npm install
或npm install --production
(不安装开发依赖项)。npm install -g
。这样,您确信您将在生产(或其他开发环境)中拥有每个包的完全相同的版本。
最后,如果您想将某个软件包升级到最新版本,只需运行:
npm install --save <pagkage_name>@latest.