不安装先检查全局版本吗?

时间:2016-10-05 03:19:25

标签: node.js npm npm-install

我刚刚设置了一个测试,并尝试npm install express,即使我的系统上已全局存在express。令我惊讶的是,它最终没有使用全局版本,而是在本地重新安装版本!它不应该使用全局版本......或者我想每次都使用-g,即使我只想使用现有的全球版本。否则,在本地安装任何东西的意义何在!?

2 个答案:

答案 0 :(得分:2)

  • 如果您要安装要在程序中使用的内容,请使用require('其他'),然后在项目的根目录下在本地安装。
  • 如果您要在shell中安装要在shell中使用的东西,请在命令行或其他东西上安装它,以便全局安装它,以便它的二进制文件最终在您的PATH环境变量中。
  

在我看来,第一个选项是最好的。简单,清晰,明确。如果你要在一堆不同的项目中重复使用相同的库,那么第二个非常方便

本地安装 -

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表示生产中不需要的依赖项(测试内容)。
  • node_modules 上传到您的VCS。
  • 新结帐后:npm installnpm install --production(不安装开发依赖项)。
  • 对于您将在控制台中使用的工具,只需
  • npm install -g

这样,您确信您将在生产(或其他开发环境)中拥有每个包的完全相同的版本。

最后,如果您想将某个软件包升级到最新版本,只需运行:

npm install --save <pagkage_name>@latest.