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

Lau*_*dou 2037 package node.js npm

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

这将打印npm本身的版本:

npm -v <package-name>
Run Code Online (Sandbox Code Playgroud)

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

npm version <package-name>
Run Code Online (Sandbox Code Playgroud)

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

npm view <package-name> version
Run Code Online (Sandbox Code Playgroud)

我如何获得已安装的版本

The*_*ppo 2412

npm list用于本地软件包或npm list -g全局安装的软件包.

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

projectName@projectVersion /path/to/project/folder
??? grunt@0.4.1
Run Code Online (Sandbox Code Playgroud)

或者,您可以在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 
Run Code Online (Sandbox Code Playgroud)

  • 在mac和linux上,最好添加"| grep module_name"来过滤所需的模块版本.特别是在使用-g全局运行时.例如:"npm list -g | grep express"获取已安装的快速版本. (121认同)
  • 如果你想要一个特定的模块,你可以像`npm list less-middleware`那样运行它. (97认同)
  • 如果你不记得`list`,`npm ls`也可以.事实上,许多npm命令都有别名,而且,如果你键入一个命令的子字符串,如果这个子字符串是明确的,它也会起作用; 例如`npm ls`,`npm list`,`npm lis`都是一样的.如果你想要更详细的输出,请尝试`npm ll`(但可能你想要添加`--depth = 0`). (14认同)
  • 对于基于*nix的系统的Per @ guya提示,在Windows上,您可以使用PowerShell获得类似的结果:`| select-string module_name`来过滤模块.或者,如果您正在使用Git Bash(或者只是Bash,那么),您可以使用`grep`. (12认同)
  • 使用脚本解析输出不是最好的.真的没有办法让输出只是包版本而不必像`npm list -g |那样 awk -F @'/ <package>/{print $ 2}'` (3认同)
  • 当前,npm 5.5.1 有一个 --parseable 选项。试试 `npm ls --depth=0 --parseable`。请参阅 [文档](https://docs.npmjs.com/cli/ls)。 (3认同)
  • 这总是给我“npm ERR!1”,无论有没有`-g` (2认同)

Pat*_*ger 829

另一种快速查找本地安装的软件包并且没有依赖关系的方法是使用:

npm list --depth=0
Run Code Online (Sandbox Code Playgroud)

这给你一些类似的东西

??? 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 它给了我同样没有--depth (14认同)
  • 似乎他们已经在npm 1.4.6修复了它.请参阅https://github.com/npm/npm/issues/4733 (7认同)
  • 适用于`| grep <package_name>` (7认同)
  • @ygaradon正确,但`--depth = 0`使它更快,因为它不必递归加载依赖 (4认同)

Sal*_*ali 201

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

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

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

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

  • npm查看<package>版本,转到npm远程注册表,而不是本地文件系统... (14认同)

Dav*_*ith 75

npm info YOUR_PACKAGE version
Run Code Online (Sandbox Code Playgroud)

例如

npm info grunt version
0.4.5
Run Code Online (Sandbox Code Playgroud)

  • 这不显示已安装的软件包版本,它只显示最新的可用版本. (92认同)
  • 同意@tanner-semerad。我查看了 [npm 文档](https://docs.npmjs.com/cli/view) 来澄清它。`npm info` 是 `npm view` 的别名,在 [npm 文档](https://docs.npmjs.com/cli/view) 中,您会发现: _This 命令显示有关包的数据并将其打印到outfd 配置引用的流,默认为 stdout。[...]_ _如果未指定,默认版本是“最新”。_ 这就是我投票否决的方式。 (2认同)
  • `npm info YOU​​R_PACKAGE version` 唯一有效的 :) (2认同)

chr*_*age 55

我刚刚使用过 __CODE__ ,效果很好

在Windows上运行:

__CODE__

在PowerShell中运行:

__CODE__

  • `find`版本对我来说不起作用 - 即使使用带引号的字符串,但powershell工作得很好 (3认同)
  • **对于Windows用户:**`npm list -g --depth = 0 |查找“ &lt;程序包名称&gt;”`注意双引号* (3认同)

Fer*_*gie 47

从包的根目录做:

node -p "require('./package.json').version"
Run Code Online (Sandbox Code Playgroud)

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

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

  • 如果有像 ^ ~ 这样的范围分隔符,这将不会安装实际版本 (4认同)
  • 或`node -p "require('./package.json').version"` (2认同)

Sno*_*now 34

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

要在命令行上获取列表,

npm ls
Run Code Online (Sandbox Code Playgroud)

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

对于特定的软件包版本,

npm ls <package-name>
Run Code Online (Sandbox Code Playgroud)

例如,

npm ls next
Run Code Online (Sandbox Code Playgroud)

它将返回版本

-- next@10.1.3
Run Code Online (Sandbox Code Playgroud)


Far*_*een 19

对于本地包裹

npm list --depth=0
Run Code Online (Sandbox Code Playgroud)

对于全球包

npm list  -g --depth=0
Run Code Online (Sandbox Code Playgroud)


小智 17

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

npm info <package name> version

  • 同样,它显示了软件包注册表中提供的最新版本,而不是当前安装的软件包的版本. (25认同)

小智 17

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

npm view <package-name> version
Run Code Online (Sandbox Code Playgroud)

例子

npm view redux version
Run Code Online (Sandbox Code Playgroud)

我有 7.2.0 版的 redux

  • 注意:这不显示已安装的版本。它显示了 npm 上的最新可用版本。 (17认同)
  • 正如@FelixAlcala 所说,这不显示已安装的软件包的版本,仅显示最新的可用版本。 (6认同)
  • 它有效这应该是现在接受的答案。 (2认同)

Jos*_*vid 15

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

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


Ben*_*hon 13

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

npm -j ls <package-name> | jq -r .version
Run Code Online (Sandbox Code Playgroud)

或者,如果你想要冗长

npm --json list <package-name> | jq --raw-output '.version'
Run Code Online (Sandbox Code Playgroud)

例如:

$ npm -j ls ghost | jq -r .version
0.4.2
Run Code Online (Sandbox Code Playgroud)

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

例如:

$ npm -j -g ls | jq -r .dependencies.ghost.version
0.4.2
Run Code Online (Sandbox Code Playgroud)


小智 13

如果你足够勇敢(并且已经node安装),你总是可以这样做:

echo "console.log(require('./package.json').version);" | node
Run Code Online (Sandbox Code Playgroud)

这将打印当前包的版本.你也可以修改它疯了,像这样:

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

这将打印WHATEVER_PACKAGE_NAME包的版本,可以看到npm version.

  • `node -e "console.log(require('./package.json').version);"` (2认同)

小智 11

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

  1. npm list用于本地软件包或npm list -g全局安装的软件包.
  2. npm list --depth=0
  3. npm list | sls <package name>
  4. node -v


Mah*_*tap 11

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

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

安装它只需运行

npm install -g npm-check
Run Code Online (Sandbox Code Playgroud)

并简单地运行

npm-check
Run Code Online (Sandbox Code Playgroud)

检查屏幕截图,它显示了有关软件包版本、新版本更新和未使用版本的所有信息。

在此处输入图片说明

它也适用于全球。试一试。希望这有助于某人。


Edu*_*omo 9

试试:

npm list --depth 1 --global packagename
Run Code Online (Sandbox Code Playgroud)


Ran*_*aki 9

我已经构建了一个完全正确的工具 - qnm

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

安装使用:

npm i --global qnm
Run Code Online (Sandbox Code Playgroud)

并运行:

qnm [module]
Run Code Online (Sandbox Code Playgroud)

例如:

> qnm lodash

lodash
??? 4.17.5
??? cli-table2
? ??? 3.10.1
??? karma
  ??? 3.10.1
Run Code Online (Sandbox Code Playgroud)

这意味着我们必须lodash安装的根node_modules,并在另外两个副本node_modulescli-table2karma.

它非常快,并且具有一些很好的功能,如标签完成和匹配搜索.


Sér*_*gio 7

您可以使用npm view [module]版本,npm info [module]版本,npm show [module]版本npm v [module]版本来检查已安装的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
Run Code Online (Sandbox Code Playgroud)

  • 所有这些都显示最新的可用版本,而不是当前安装的版本 (14认同)

wjo*_*dan 6

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

$ npm ll -pg --depth=0 grunt | grep -o "@.*:" | sed 's/.$//; s/^.//'
0.4.5
Run Code Online (Sandbox Code Playgroud)
  • npm ll可解析的串格式化像输出:/usr/lib/node_modules/npm:npm@2.14.8:;
  • 所述grep命令提取之间的值@:,包括端值;
  • sed命令删除周围的字符.


JGF*_*FMK 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
Run Code Online (Sandbox Code Playgroud)

现在我所要做的就是键入:

  • 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

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


zum*_*fra 6

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

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

--depth=0 返回一个没有依赖项的已安装包列表,这是您大部分时间想要做的。

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


Nan*_*rai 6

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


Cha*_*wen 6

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

npm ls package
Run Code Online (Sandbox Code Playgroud)

例子:

npm ls babel-cli
`-- babel-cli@6.26.0
Run Code Online (Sandbox Code Playgroud)

npm 文档说 npm -ls

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

NPM 文档


小智 6

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

npm list -g --depth=0 | grep <module_name>
Run Code Online (Sandbox Code Playgroud)


Ali*_*sei 5

您可以尝试这样: npm show {package} version显示最新的软件包版本.如果您的软件包已过时,npm outdated将显示版本信息.

  • OP询问了当前安装的*软件包的版本,而不是软件包注册表中提供的最新版本. (2认同)

kav*_*gun 5

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

npm ls --depth=0

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

npm ls -g --depth=0


小智 5

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

npm list --depth=0 packagename | grep packagename | cut -d'@' -f2
Run Code Online (Sandbox Code Playgroud)

例如,PM2安装的版本号:

npm list --depth=0 packagename | grep packagename | cut -d'@' -f2
Run Code Online (Sandbox Code Playgroud)

要列出全局安装的软件包,请将-g标志添加到npm list命令中,例如:

npm list -g --depth=0 packagename | grep packagename | cut -d'@' -f2
Run Code Online (Sandbox Code Playgroud)