find已安装的npm软件包的版本

如何find安装的node.js / npm 的版本?

这将打印npm本身的版本:

npm -v <package-name> 

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

 npm version <package-name> 

这将打印registry中的软件包版本(即可用的最新版本):

 npm view <package-name> version 

我如何获得安装的版本

本地软件包的npm list -g或者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 

找出哪些软件包在本地安装而没有依赖关系的另一个快速方法是使用:

 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

npm view <package> version – 返回npm view <package> version的最新可用版本。

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

npm list – 返回所有模块和依赖关系的版本。

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

 npm info YOUR_PACKAGE version 

例如

 npm info grunt version 0.4.5 

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

在Windows上运行:

npm list | find <package name>

在PowerShell中运行:

npm list | sls <package name>

从包装的根源做到:

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

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

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

您可以使用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 

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

 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 

如果你够勇敢(并且已经安装了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看到的。

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

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

这里有一个可移植的Unix(使用grepsed ),它返回全局安装的npm包的版本string(将g-pg移除以查询本地包):

 $ npm ll -pg --depth=0 grunt | grep -o "@.*:" | sed 's/.$//; s/^.//' 0.4.5 
  • npm ll输出一个可parsing的string,格式如下:/ /usr/lib/node_modules/npm:npm@2.14.8: npm ll : /usr/lib/node_modules/npm:npm@2.14.8:
  • grep命令提取@:之间的值,包括;
  • sed命令删除周围的字符。

试试:

 npm list --depth 1 --global packagename 

我把这个添加到我的.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 

现在我要做的就是input:

  • npm版本的NPM version is: 4.2.0例如: NPM version is: 4.2.0
  • 本地版本的npmv <软件包名称>例如: 0.8.08
  • npmv <软件包名称> g为全局版本,例如: 0.8.09
  • npmv <软件包名称> l最新版本,例如: 0.8.10

注意-d在切割命令表示方式之后,依次为@,那么f意味着字段2表示第二个字段,因为@符号的任一侧是一个。

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

访问package.json

您可以通过以下方式访问软件包的package.jsonbower.json

notepad ./node_modules/:packageName/package.json

这将打开notepad中的package.json ,其中包含command包含的:packageNameversion number

例如 :

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

祝你好运。