【问题标题】:How to install npm package globally only if not already installed?仅在尚未安装的情况下如何全局安装 npm 包?
【发布时间】:2016-12-13 22:32:28
【问题描述】:

我正在编写一个构建脚本,它执行如下命令:

  • npm install bower -g
  • npm install gulp -g

在我的机器上安装这些包大约需要 30-60 秒,即使它们已经安装(例如,从之前运行的构建脚本中安装)。

我在想有一种方法可以检测 bowergulp 是否已安装,在这种情况下跳过安装以在构建期间节省一些时间。

这样的事情可能吗?我该怎么做?

我正在使用 Windows 和 PowerShell,但我认为 bash 中的一些解决方案可能可以移植到 Windows...

【问题讨论】:

  • 不是您问题的直接答案,但如果它们已经在您的计算机上,则不应花费 30-60 秒,除非它试图确定版本匹配。如果您明确说明 package.json 和 bower.json 中的版本,则无需花时间访问注册表即可查看是否有更新的版本可用。
  • @Paul:感谢您的回复。我认为 package.json 没有在全局安装中使用。实际上,我认为我的 package.json 文件中根本没有列出凉亭。 bower.json 也与此无关,因为所有这些都是 npm 安装...
  • 好的,我完全误读了,谢谢。所以,你是对的 .json 文件不用于全局安装,对不起。也就是说,我的评论是关于在您运行安装的命令中使用特定版本。
  • @Paul:是的,好主意。我尝试运行 npm install gulp@3.9.1 -g 几次,每次运行仍然需要大约 10 秒,但我认为它会快一些。

标签: node.js npm gulp bower npm-install


【解决方案1】:

在 Win7+ 上,您可以使用 where <command>,例如

@echo off
where gulp > nul
if %ERRORLEVEL% GEQ 1 (npm i gulp -g) else (echo Gulp already installed)

【讨论】:

  • 谢谢,效果很好。使用 PowerShell 时,还有Get-Command 的替代方案。
猜你喜欢
  • 2015-08-20
  • 2012-06-23
  • 2021-04-13
  • 2015-09-10
  • 1970-01-01
  • 2020-01-04
  • 2018-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多