如何判断npm软件包是全局安装还是本地安装


153

我在Windows7上安装grunt,node,npm,bower和grunt-cli。

说明说我应该为全局运行带有-g标志的安装命令。

安装后如何检查是否使用了-g标志。卸载它们并重新安装将花费大量时间。

Answers:


218

使用list带有-g标志的命令来查看全局安装的所有软件包:

npm list -g

要检查是否在全球范围内安装了特定的软件包,可以提供软件包的名称(grunt在这种情况下),如下所示:

npm list -g grunt

或者您可以使用grep来过滤软件包名称:

npm list -g | grep grunt

资料来源:https : //docs.npmjs.com/cli/ls


4
对于布尔值“是否已安装?” 检查,尝试使用--depth。例如:npm list --depth 1 --global csats-mturk > /dev/null 2>&1这是一个更详细的示例
亚当·蒙森

2
@AdamMonsen,我正在寻找tern的顶级安装。我曾经npm list --depth 0 --global tern检查过tern是否已在全球范围内安装,就像npm install -g tern
Sudhi

grep鉴于有关npm由于依赖关系未满足而退出并出现错误的评论,这似乎是一个相当可靠的解决方案
myol

31
npm list --depth 1 --global packagename > /dev/null 2>&1

然后,您可以检查退出状态以查看其是否已安装。谢谢亚当蒙森


3
谢谢--depth 1!那就是我想要的。实际上,我现在正在使用npm list --depth 0 -g
揭露

由于某种原因,即使软件包已安装或未安装,也$?总是1为我返回。
凯蒂

4
警告:如果您的任何软件包都具有未满足的依赖关系,即使安装了软件包,npm也会始终以错误退出。@Kayvar,这就是npm为您返回1的原因。
编码

17

要检查是否在全局范围内安装了特定的软件包,请执行:

npm list -g [package-name]

让我们以“咕unt”为例。如果它是全局安装的,您应该会看到类似以下的内容

C:\data\tryout\test1>npm list -g grunt
C:\Users\xxxxxxx\AppData\Roaming\npm
└── grunt@0.4.5

如果未全局安装,则应该看到类似以下的内容

C:\data\tryout\test1>npm list -g grunt
C:\Users\xxxxxxx\AppData\Roaming\npm
└── (empty)

要检查本地是否安装了特定的软件包,您可以执行与上述相同的命令,但不使用-g参数。

来源:如何检查npm软件包是全局安装还是本地安装


6

您可以使用以下命令列出所有全局软件包:

npm ls -g

或使用以下方法检查特定的包装:

npm ls -g [package-name] 

例如: npm ls -g @angular/cli


1

在Windows中,我们使用以下命令来确定软件包是否已安装。请参考图片了解详细信息。

npm list -g | find "create"

样本结果


0

从您的包裹中 sindresorhus/is-installed-globally

https://github.com/sindresorhus/is-installed-globally

用法:

const isInstalledGlobally = require('is-installed-globally');

// With `npm install your-package`
console.log(isInstalledGlobally);
//=> false

// With `npm install --global your-package`
console.log(isInstalledGlobally);
//=> true

当我必须随包分发预构建的文件时,我发现这很有用:如何发布包含分发文件的npm包?使用此软件包,我可以检查安装是本地安装还是全局安装,然后使用相对路径进行本地安装,如下所示

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.