如何查找已安装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 view<package>版本-返回包的最新可用版本。
npm列表--depth=0-返回所有已安装模块的版本,无依赖关系。
npm列表-返回所有模块和依赖项的版本。
最后获得Node.js版本:Node-v
其他回答
对于本地包使用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参数来列出已安装的包,而不列出它们的依赖项。
这里有一个可移植的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命令删除周围的字符。
这有一个简单的方法。首先,转到所需的位置(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。
如果您同意安装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
如果你足够勇敢(并且安装了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包的版本。