如何查找已安装Node.js或npm包的版本?
这将打印npm本身的版本:
npm -v <package-name>
这将打印一个隐藏的错误:
npm version <package-name>
这将在注册表中打印软件包版本(即可用的最新版本):
npm view <package-name> version
如何获取已安装的版本?
如何查找已安装Node.js或npm包的版本?
这将打印npm本身的版本:
npm -v <package-name>
这将打印一个隐藏的错误:
npm version <package-name>
这将在注册表中打印软件包版本(即可用的最新版本):
npm view <package-name> version
如何获取已安装的版本?
对于本地包使用npm列表,对于全局安装的包使用npm-list-g。
通过将特定包的名称作为参数传递,可以找到该包的版本。例如,npm list grut将导致:
projectName@projectVersion /path/to/project/folder
└── grunt@0.4.1
或者,您可以只运行npm列表,而不传递包名作为参数来查看所有包的版本:
├─┬ 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列表-g--depth=0,也可以在全局范围内执行同样的操作。
如果您安装了大量软件包,则此方法更清晰。
要了解哪些包需要更新,可以使用npm-outaged-g-depth=0。
npm view<package>版本-返回包的最新可用版本。
npm列表--depth=0-返回所有已安装模块的版本,无依赖关系。
npm列表-返回所有模块和依赖项的版本。
最后获得Node.js版本:Node-v
如果您同意安装jq,可以使用npm列表的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
这里有一个可移植的Unix(使用grep和sed)一行程序,它返回全局安装的npm包的版本字符串(从-pg中删除g以查询本地包):
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]版本、npm info[module]version、npm show[module]-version或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
我刚用过
npm list | grep <package name>
而且效果很好。
在Windows上,运行:
npm list | find <package name>
在PowerShell运行中:
npm list | sls <package name>
如果你足够勇敢(并且安装了Node.js),你总是可以做一些事情,比如:
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
这将打印由npm版本看到的WHATEVER_PACKAGE_NAME包的版本。
从包的根目录执行以下操作:
node -p "require('./package.json').version"
(因此,如果您还不在模块的主目录中,则需要cd到该目录中。如果您安装了带有npm install的模块,则该模块将位于node_modules/<module_name>下。)
访问package.json文件
您可以使用以下命令访问包的package.json或bower.json文件:
Windows(已安装记事本):
notepad ./node_modules/vue-template-compiler/package.json`
这将在记事本中打开package.json,其中包含命令中包含的packageName的版本号。
Mac/Linux:
cat node_modules/prettier/package.json | grep version
这将输出如下内容:
要查看本地或全局安装的所有软件包,请使用以下命令:
本地软件包的npm列表或全局安装的软件包的npm列表-g。npm列表--深度=0npm列表|sls<包名>节点-v
我将此添加到.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 the same thing
;;
*) echo 'Invalid arguments';
;;
esac;
;;
*) echo 'Invalid arguments';
;;
esac;
}
export -f npmv
现在我要做的就是键入:
npm版本的npmv,例如,npm版本为: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”表示第二个字段,因为@符号的两边都有一个。
结合上面的一些答案,生成一个超级简单和超级快速的查找。
从项目根目录运行。无需cd到任何文件夹中,只需一行:
node-p“require('OMEPACKAGE/package.json').version”
我已经建立了一个工具,可以做到这一点-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
这意味着我们在node_modules文件夹的根目录中安装了lodash,在cli-table2和karma的node_module文件夹中安装了另外两个副本。
它真的很快,并且有一些很好的功能,比如制表符完成和匹配搜索。
这是一个简单的问题,应该有一个比我在以前的答案中看到的更简单的答案。
要查看已安装的npm包及其版本,命令是npmls-depth=0,默认情况下,它显示本地安装的内容。要查看全局安装的包,请添加-global参数:npmls-depth=0-global。
--depth=0返回一个已安装包的列表,其中没有依赖项,这是您大多数时候想要做的。
ls是命令的名称,list是ls的别名。
npm list--depth 0是显示所有版本库的命令,但您可以使用npm check。
npm检查是一个很好的库,可以管理所有与版本系统事件相关的事情。它将显示库版本、新版本更新和未使用的版本等。
要安装它,只需运行:
npm install -g npm-check
简单地运行
npm-check
查看屏幕截图。它显示了包版本、新版本更新和未使用版本的所有信息。
它也适用于全球。试试看。
这很简单。。只需键入以下行
npm view <package-name> version
实例
npm view redux version
我有Redux版本7.2.0。
我看到了一些非常有创意的答案,但您可以这样做(对于全局包,添加--global开关):
npm ls package
例子:
npm ls babel-cli
输出:
`-- babel-cli@6.26.0
npm文档说npm-ls
此命令将向stdout打印以及它们的依赖关系,以树形结构安装。
NPM文件
您可以查看文件package.json以查看已安装的软件包版本。
要在命令行上获取列表,
npm ls
它将为您提供项目中所有已安装的软件包及其各自的版本。
对于特定的包版本,
npm ls <package-name>
例如
npm ls next
它将返回版本
-- next@10.1.3
这有一个简单的方法。首先,转到所需的位置(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"
}
}
因此,您可以读取pc中安装的每个依赖项(模块),即“socket.io”:“^4.1.2”,因此“socket.io'”的版本为4.1.2。
要仅获取已安装的版本号,请尝试:
npm list --depth=0 packagename | grep packagename | cut -d'@' -f2
例如,PM2的安装版本号:
npm list --depth=0 pm2 | grep pm2 | cut -d'@' -f2
要列出全局安装的软件包,请在npm list命令中添加-g标志,例如:
npm list -g --depth=0 packagename | grep packagename | cut -d'@' -f2
只需检查package.json文件。
"dependencies": {
"ajv": "^8.9.0",
"ajv-keywords": "^5.1.0",
"fastify": "^3.27.0"