如何找到已安装的 node.js/npm包的版本?
这将打印 npm 本身的版本:
npm -v <package-name>
这会打印一个神秘的错误:
npm version <package-name>
这会在注册表上打印软件包版本(即可用的最新版本):
npm view <package-name> version
如何获取已安装的版本?
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
参数以列出已安装的软件包,而无需依赖它们。
另一种快速找出哪些软件包安装在本地并且没有依赖项的方法是使用:
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 list --depth=0
- 返回所有已安装模块的版本,没有依赖关系。
npm list
- 返回所有模块和依赖项的版本。
最后获取节点版本:node -v
npm info YOUR_PACKAGE version
例如
npm info grunt version
0.4.5
从包的根目录执行:
node -p "require('./package.json').version"
编辑:(所以如果你还没有进入模块的主目录,那么你需要cd
进入模块的主目录。如果你已经安装了模块npm install
,那么它将在下面node_modules/<module_name>
)
编辑 2:根据@jeff-dickey 的回答更新
我刚用
npm list | grep <package name>
效果很好
在 Windows 上运行:
npm list | find <package name>
在 PowerShell 中运行:
npm list | sls <package name>
npm view <package-name> version
npm view redux version
我有版本 7.2.0 的 redux
对于本地包
npm list --depth=0
对于全球包裹
npm list -g --depth=0
结合上面的一些答案并产生一个超级简单和超级快速的查找。
从项目根目录运行。无需cd
进入任何文件夹,只需 1 行:
node -p "require('SOMEPACKAGE/package.json').version"
如果您同意安装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
您还可以使用以下命令检查版本:
npm info <package name> version
如果您足够勇敢(并且已经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
对于本地软件包或npm list -g
全局安装的软件包。npm list --depth=0
npm list | sls <package name>
node -v
我已经构建了一个完全可以做到这一点的工具 - 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-table2
karma
它非常快,并且具有一些不错的功能,例如制表符补全和匹配搜索。
要列出具有版本号的本地包,请使用:
npm ls --depth=0
要列出具有版本号的全局包,请使用:
npm ls -g --depth=0
尝试:
npm list --depth 1 --global packagename
我已经看到了一些非常有创意的答案,但你可以这样做(对于全局包添加 --global 开关):
npm ls package
例子:
npm ls babel-cli
`-- babel-cli@6.26.0
npm 文档说 npm -ls
此命令将以树形结构将已安装的所有软件包版本及其依赖项打印到标准输出。
这是一个可移植的 Unix(使用grep
and sed
)单行程序,它返回全局安装的 npm 包的版本字符串(删除g
from-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
命令删除周围的字符。您可以使用npm view [module] version、npm info [module] version、npm show [module] version或npm 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
这是一个简单的问题,应该有比我上面看到的更简单的答案。
要查看已安装的 npm 包及其版本,命令是npm ls --depth=0
,默认情况下,它会显示本地安装的内容。要查看全局安装的软件包,请添加-global
参数:npm ls --depth=0 -global
.
--depth=0
返回一个没有依赖关系的已安装包的列表,这是您大多数时候想要做的。
ls
是命令的名称,并且是的list
别名。ls
npm list package-name给出当前安装的版本
我将此添加到我的 .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
现在我要做的就是输入:
NPM version is: 4.2.0
0.8.08
0.8.09
0.8.10
注意 cut 命令上的 -d 表示分隔符,后跟 @,然后 f 表示字段,2 表示第二个字段,因为 @ 符号的任一侧都会有一个。
您可以查看 package.json 以查看已安装的软件包版本
在命令行上获取列表
npm ls
它将为您提供项目中所有已安装的软件包及其各自的版本。
对于特定的包版本
npm ls <package-name>
例如
npm ls next
它将返回版本
-- next@10.1.3
你可以试试这个:
npm show {package} version
显示最新的包版本。如果您的包已过时,npm outdated
将显示版本信息。
如果您想检查全局安装的特定模块,请在 *nix 系统上使用:
npm list -g --depth=0 | grep <module_name>
package.json
您可以通过以下方式访问包的package.json
or bower.json
:
notepad ./node_modules/:packageName/package.json
这将打开您包含package.json
在notepad
其中version number
的.:packageName
command
notepad ./node_modules/vue-template-compiler/package.json
祝你好运。
我们可以使用npm view any-promise (你的模块名称) -v
我在用
npm 列表 --depth=0 | grep 模块名称@
它给我带来了这样的结果
├── module_name@2.1033.0
有一种简单的方法可以做到这一点。首先,转到所需的位置(所在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
要仅获取已安装的版本号,请尝试:
npm list -g --depth=0 包名 | grep 包名 | 剪切 -d'@' -f2
例如安装的 PM2 版本号:
npm 列表 -g --depth=0 pm2 | grep pm2 | 剪切 -d'@' -f2
您还可以package.json
在文本编辑器中手动查看,查看哪些包是依赖项。如果npm list
不能作为手动替代,请使用此选项。
npx 在 npm run-script-like
shell 环境中运行命令,所有常用的环境变量都可用。因此你也可以使用类似的东西
npx -c 'node -p "process.env.npm_package_version"'
所有的答案都是关于npm
这是如何使用yarn
.
如果有人需要,可以提供帮助。
您可以使用以下命令检测确切的运行模块版本:
yarn list
=>列出所有依赖
yarn list --depth=0
项 => 要限制依赖项的深度,请使用--depth
flag。
只需检查您的 package.json 文件。
"dependencies": {
"ajv": "^8.9.0",
"ajv-keywords": "^5.1.0",
"fastify": "^3.27.0"