2667

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

这将打印 npm 本身的版本:

npm -v <package-name>

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

npm version <package-name>

这会在注册表上打印软件包版本(即可用的最新版本):

npm view <package-name> version

如何获取已安装的版本

4

35 回答 35

3078

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 

您还可以添加--depth=0参数以列出已安装的软件包,而无需依赖它们。

于 2012-06-11T19:13:26.997 回答
982

另一种快速找出哪些软件包安装在本地并且没有依赖项的方法是使用:

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.

于 2013-05-23T01:50:16.977 回答
265

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

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

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

最后获取节点版本:node -v

于 2014-07-01T03:03:41.820 回答
107
npm info YOUR_PACKAGE version

例如

npm info grunt version
0.4.5
于 2015-06-24T03:21:41.003 回答
75

从包的根目录执行:

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

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

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

于 2016-09-30T11:57:20.887 回答
71

我刚用

npm list | grep <package name>

效果很好

在 Windows 上运行:

npm list | find <package name>

在 PowerShell 中运行:

npm list | sls <package name>
于 2016-01-27T12:39:55.573 回答
28

这很简单..只需在下面输入

npm view <package-name> version

例子

npm view redux version

我有版本 7.2.0 的 redux

于 2020-05-14T07:43:04.983 回答
28

对于本地包

npm list --depth=0

对于全球包裹

npm list  -g --depth=0
于 2018-03-09T12:26:08.717 回答
27

结合上面的一些答案并产生一个超级简单和超级快速的查找。
从项目根目录运行。无需cd进入任何文件夹,只需 1 行:

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

于 2017-12-13T07:08:54.510 回答
20

如果您同意安装jq,则可以使用npm list.

npm -j ls <package-name> | jq -r .version

或者,如果你想详细一点

npm --json list <package-name> | jq --raw-output '.version'

例如:

$ npm -j ls ghost | jq -r .version
0.4.2

此外,全局包的 JSON 格式略有不同,因此您需要更改查询。

例如:

$ npm -j -g ls | jq -r .dependencies.ghost.version
0.4.2
于 2014-08-13T11:56:21.817 回答
20

您还可以使用以下命令检查版本:

npm info <package name> version

于 2017-12-16T04:28:22.177 回答
15

如果您足够勇敢(并且已经node安装),您可以随时执行以下操作:

echo "console.log(require('./package.json').version);" | node

这将打印当前包的版本。您还可以将其修改为疯狂,如下所示:

echo "eval('var result='+require('child_process').execSync('npm version',{encoding:'utf8'})); console.log(result.WHATEVER_PACKAGE_NAME);" | node

这将打印WHATEVER_PACKAGE_NAME包的版本,由npm version.

于 2016-08-05T14:41:02.357 回答
13

要在本地或全局查看所有已安装的包,请使用以下命令:

  1. npm list对于本地软件包或npm list -g全局安装的软件包。
  2. npm list --depth=0
  3. npm list | sls <package name>
  4. node -v
于 2016-12-20T15:04:18.770 回答
12

我已经构建了一个完全可以做到这一点的工具 - qnm

qnm - 一个用于查询node_modules目录的简单 CLI 实用程序。

安装它使用:

npm i --global qnm

并运行:

qnm [module]

例如:

> qnm lodash

lodash
├── 4.17.5
├─┬ cli-table2
│ └── 3.10.1
└─┬ karma
  └── 3.10.1

这意味着我们已经在和lodash的根目录中安装了node_modules另外两个node_modules副本。cli-table2karma

它非常快,并且具有一些不错的功能,例如制表符补全和匹配搜索。

于 2018-03-10T17:42:10.050 回答
12

要列出具有版本号的本地包,请使用:

npm ls --depth=0

要列出具有版本号的全局包,请使用:

npm ls -g --depth=0

于 2019-07-09T19:35:12.223 回答
11

尝试:

npm list --depth 1 --global packagename
于 2016-05-13T13:16:19.313 回答
11

npm list --depth 0是显示所有带有版本的库的命令,但您可以使用npm-check

npm-check 是一个很好的库来管理与版本系统事件有关的所有事情,它将显示库版本、新版本更新和未使用的版本等等。

安装它只需运行

npm install -g npm-check

并简单地运行

npm-check

检查显示有关软件包版本、新版本更新和未使用版本的所有内容的屏幕截图。

在此处输入图像描述

它也适用于全球。试试看。希望这对某人有所帮助。

于 2019-06-11T06:22:15.520 回答
10

我已经看到了一些非常有创意的答案,但你可以这样做(对于全局包添加 --global 开关):

npm ls package

例子:

npm ls babel-cli
`-- babel-cli@6.26.0

npm 文档说 npm -ls

此命令将以树形结构将已安装的所有软件包版本及其依赖项打印到标准输出。

NPM 文档

于 2020-07-19T23:46:06.837 回答
8

这是一个可移植的 Unix(使用grepand sed)单行程序,它返回全局安装的 npm 包的版本字符串(删除gfrom-pg以改为查询本地包):

$ npm ll -pg --depth=0 grunt | grep -o "@.*:" | sed 's/.$//; s/^.//'
0.4.5
  • 输出一个可解析的npm ll字符串,格式如下/usr/lib/node_modules/npm:npm@2.14.8:
  • grep命令提取 和 之间的值@:包括在内;
  • sed命令删除周围的字符。
于 2015-10-29T23:11:11.823 回答
7

您可以使用npm view [module] versionnpm info [module] versionnpm show [module] versionnpm v [module] version来检查已安装 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
于 2015-11-12T15:53:03.993 回答
7

这是一个简单的问题,应该有比我上面看到的更简单的答案。

要查看已安装的 npm 包及其版本,命令是npm ls --depth=0,默认情况下,它会显示本地安装的内容。要查看全局安装的软件包,请添加-global参数:npm ls --depth=0 -global.

--depth=0返回一个没有依赖关系的已安装包的列表,这是您大多数时候想要做的。

ls是命令的名称,并且是的list 别名ls

于 2019-03-23T20:47:41.320 回答
7

npm list package-name给出当前安装的版本

于 2020-03-04T19:10:57.503 回答
6

我将此添加到我的 .bashrc

function npmv {
    case $# in # number of arguments passed
    0) v="$(npm -v)" ; #store output from npm -v in variable
        echo "NPM version is: $v"; #can't use single quotes 
                                   #${v} would also work
    ;;   
    1) s="$(npm list --depth=0 $1 | grep $1 | cut -d @ -f 2)";
       echo "$s";
    ;;
    2) case "$2" in # second argument
        g) #global|#Syntax to compare bash string to literal
             s="$(npm list --depth=0 -g $1 | grep $1 | cut -d @ -f 2)";
        echo "$s";
        ;;
        l) #latest
             npm view $1 version; #npm info $1 version does same thing
       ;;
       *) echo 'Invalid arguments';
       ;;
       esac;
    ;;
    *) echo 'Invalid arguments';
    ;;
    esac;
}
export -f npmv

现在我要做的就是输入:

  • npmv用于 npm 的版本,例如:NPM version is: 4.2.0
  • npmv <package-name>用于本地版本,例如:0.8.08
  • npmv <package-name> g用于全局版本,例如:0.8.09
  • npmv <package-name> l用于最新版本,例如:0.8.10

注意 cut 命令上的 -d 表示分隔符,后跟 @,然后 f 表示字段,2 表示第二个字段,因为 @ 符号的任一侧都会有一个。

于 2017-06-04T02:04:49.173 回答
5

您可以查看 package.json 以查看已安装的软件包版本

在命令行上获取列表

npm ls

它将为您提供项目中所有已安装的软件包及其各自的版本。

对于特定的包版本

npm ls <package-name>

例如

npm ls next

它将返回版本

-- next@10.1.3
于 2021-05-06T14:16:25.683 回答
5

你可以试试这个: npm show {package} version显示最新的包版本。如果您的包已过时,npm outdated将显示版本信息。

于 2017-11-04T12:41:51.953 回答
4

如果您想检查全局安装的特定模块,请在 *nix 系统上使用:

npm list -g --depth=0 | grep <module_name>
于 2020-08-11T20:11:02.157 回答
3

访问package.json

您可以通过以下方式访问包的package.jsonor bower.json

notepad ./node_modules/:packageName/package.json

这将打开您包含package.jsonnotepad其中version number的.:packageNamecommand

例如 :

notepad ./node_modules/vue-template-compiler/package.json

祝你好运。

于 2016-11-17T11:23:43.687 回答
3

我们可以使用npm view any-promise (你的模块名称) -v

于 2017-12-28T12:14:48.210 回答
2

我在用

npm 列表 --depth=0 | grep 模块名称@

它给我带来了这样的结果

├── module_name@2.1033.0

于 2021-11-22T18:40:50.517 回答
2

有一种简单的方法可以做到这一点。首先,转到所需的位置(所在package.json位置)。和简单的打开package.json文件作为文本编辑器。

通过这种方法,您可以在一个地方找到所有模块版本

package.json看起来像这样

{
  "name": "raj",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "bcrypt": "^5.0.1",
    "connect-flash": "^0.1.1",
    "dotenv": "^10.0.0",
    "ejs": "^3.1.6",
    "express": "^4.17.1",
    "express-session": "^1.17.2",
    "mysql2": "^2.2.5",
    "passport": "^0.4.1",
    "passport-local": "^1.0.0",
    "sequelize": "^6.6.2",
    "socket.io": "^4.1.2"
  }
}

因此,您可以在您的电脑中读取每个已安装的依赖项(模块),
"socket.io": "^4.1.2"'socket.io'版本4.1.2

于 2021-07-06T05:33:15.637 回答
0

要仅获取已安装的版本号,请尝试:

npm list -g --depth=0 包名 | grep 包名 | 剪切 -d'@' -f2

例如安装的 PM2 版本号:

npm 列表 -g --depth=0 pm2 | grep pm2 | 剪切 -d'@' -f2

于 2021-11-12T16:03:36.673 回答
0

您还可以package.json在文本编辑器中手动查看,查看哪些包是依赖项。如果npm list不能作为手动替代,请使用此选项。

于 2021-02-04T10:42:48.440 回答
-1

npx 在 npm run-script-likeshell 环境中运行命令,所有常用的环境变量都可用。因此你也可以使用类似的东西

npx -c 'node -p "process.env.npm_package_version"'  
于 2021-11-23T14:50:23.050 回答
-1

所有的答案都是关于npm
这是如何使用yarn.
如果有人需要,可以提供帮助。
您可以使用以下命令检测确切的运行模块版本:
yarn list=>列出所有依赖
yarn list --depth=0项 => 要限制依赖项的深度,请使用--depthflag

于 2021-10-31T12:43:24.427 回答
-2

只需检查您的 package.json 文件。

"dependencies": {
  "ajv": "^8.9.0",
  "ajv-keywords": "^5.1.0",
  "fastify": "^3.27.0"
于 2022-01-25T23:41:07.817 回答