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
看到的。
要在本地或全局查看所有已安装的软件包,请使用以下命令:
- 本地软件包的
npm list -g
或者npm list -g
用于全局安装的软件包。 -
npm list --depth=0
-
npm list | sls <package name>
-
node -v
这里有一个可移植的Unix(使用grep
和sed
),它返回全局安装的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.json
或bower.json
:
notepad ./node_modules/:packageName/package.json
这将打开notepad
中的package.json
,其中包含command
包含的:packageName
的version number
。
例如 :
notepad ./node_modules/vue-template-compiler/package.json
祝你好运。