题 找到已安装的npm软件包的版本


如何查找已安装的node.js / npm的版本

这将打印npm本身的版本:

npm -v <package-name>

这打印出一个神秘的错误:

npm version <package-name>

这将打印包版本 在注册表上 (即最新版本):

npm view <package-name> version

我如何得到 安装版


1577
2018-06-10 20:36


起源


使用command => npm --version获取已安装的npm版本。 - LogicalDesk
尝试 npm show <package> version - r00t hkr
在我的安装中,“npm -v <package-name>”报告npm本身的版本。要在注册表中列出软件包的最新版本,我发现“npm view <package-name> version”可以完成工作。 - David A. Gray


答案:


npm list 对于本地包裹或 npm list -g 用于全局安装的包。

您可以通过将其名称作为参数来查找特定包的版本。例如, npm list grunt 将导致:

projectName@projectVersion /path/to/project/folder
└── grunt@0.4.1

或者,你可以跑 npm list 不传递包名作为参数,以查看所有包的版本:

├─┬ cli-color@0.1.6 
│ └── es5-ext@0.7.1 
├── coffee-script@1.3.3 
├── less@1.3.0 
├─┬ sentry@0.1.2 
│ ├── file@0.2.1 
│ └── underscore@1.3.3 
└── uglify-js@1.2.6 

1936
2018-06-11 19:13



在mac和linux上,最好添加“| grep module_name”来过滤所需的模块版本。特别是在使用-g全局运行时。例如:“npm list -g | grep express”获取已安装的快递版本。 - guya
如果你想要一个特定的模块,你可以运行它 npm list less-middleware 举个例子。 - juanpaco
对于基于* nix的系统的Per @ guya提示,在Windows上,您可以使用PowerShell获得类似的结果: | select-string module_name 过滤模块。或者,如果您正在使用Git Bash(或者只是Bash,那么),您可以使用 grep。 - Noel
如果你不记得了 list, npm ls 也有效。事实上,许多npm命令都有别名,而且,如果你输入一个命令的子字符串,如果这个子字符串是明确的,它也会起作用;例如 npm ls, npm list, npm lis都是一样的。如果您想要更详细的输出,请尝试 npm ll (但可能你想要 --depth=0 添加到它)。 - jakub.g
使用脚本解析输出不是最好的。真的没有办法让输出只是包版本而不必做类似的事情 npm list -g | awk -F@ '/<package>/ { print $2}' - Thayne


找出安装包的另一种快速方法 本地 和 没有他们的依赖 是用来:

npm list --depth=0

这给你一些类似的东西

├── bower@0.8.6
├── grunt@0.4.1
├── grunt-bower-requirejs@0.4.3
├── grunt-contrib-clean@0.4.1
├── grunt-contrib-coffee@0.7.0
├── grunt-contrib-copy@0.4.1
├── grunt-contrib-imagemin@0.1.4
├── grunt-contrib-jshint@0.1.1
├── grunt-contrib-livereload@0.1.2
├── grunt-contrib-requirejs@0.4.1
├── grunt-regarde@0.1.1
└── grunt-svgmin@0.1.0

显然,同样可以在全球范围内完成 npm list -g --depth=0

如果您安装了很多软件包,这种方法会更加清晰。

要找出需要更新的软件包,您可以使用 npm outdated -g --depth=0


707
2018-05-23 01:50



它给了我同样没有--depth - ygaradon
似乎他们已经在npm 1.4.6修复了它。看到 github.com/npm/npm/issues/4733 - Howie
非常适合 | grep <package_name> - Marco Prins
@ygaradon正确,但是 --depth=0 使它更快,因为它不必递归加载依赖项 - Marco Prins


npm view <package> version  - 返回包装上的最新可用版本。

npm list --depth=0  - 返回所有已安装模块的版本,没有依赖项。

npm list  - 返回所有模块和依赖项的版本。

最后得到节点版本: node -v


164
2017-07-01 03:03



npm view <package>版本,转到npm远程注册表,而不是本地文件系统... - Alexander Mills
@AlexanderMills是的,但是在这里避免了另外的搜索。顺便说一句, npm v, npm info 和 npm show 都是别名 npm view。 - CPHPython


npm info YOUR_PACKAGE version

例如

npm info grunt version
0.4.5

71
2018-06-24 03:21



这不显示已安装的软件包版本,它只显示最新的可用版本。 - Tanner Semerad
同意@ tanner-semerad。我查了一下 npm的文件 澄清它。 npm info 是别名 npm view 并在 npm的文件 你会发现这个立场: 此命令显示有关包的数据,并将其打印到outfd配置引用的流,默认为stdout。 [...]  如果未指定,则默认版本为“最新”。  那是我投票的方式。 - dannydedog


我刚刚用过 npm list | grep <package name> 它工作得很好

在Windows上运行:

npm list | find <package name>

在PowerShell中运行:

npm list | sls <package name>


38
2018-01-27 12:39



find 版本对我不起作用 - 即使使用带引号的字符串,但powershell也能正常工作 - fiat


从包的根目录做:

node -p "require('./package.json').version"

编辑:(所以你需要 cd 如果你还没有进入模块的主目录。如果您已安装模块 npm install那么它将在 node_modules/<module_name>

编辑2:根据@ jeff-dickey的回答更新


27
2017-09-30 11:57



太好了!比其他答案建议的那样运行“npm list”要快一点(~1s而不是~20s) - 至少当你准备好这段代码片段时! (应该有一个npm插件来执行此操作...) - Venryx
要么 node -p "require('./package.json').version" - Jeff Dickey


您可以使用 npm查看[module]版本npm info [module]版本npm show [module]版本 要么 npm v [模块]版本 检查已安装的npm模块上的版本。

我们假设我的grunt模块版本是0.4.5:

npm view grunt version => 0.4.5
npm info grunt version => 0.4.5
npm show grunt version => 0.4.5
npm v grunt version    => 0.4.5

13
2017-11-12 15:53



所有这些都显示最新的可用版本,而不是当前安装的版本 - sth


您也可以通过此命令检查版本。

npm info <package name > version


13
2017-12-16 04:28



同样,它显示了软件包注册表中提供的最新版本,而不是当前安装的软件包的版本。 - Dawid Ferenczy