如何查找已安装的 node.js/npm 包的版本?
这将打印 npm 本身的版本:
npm -v <package-name>
这会打印一个神秘的错误:
npm version <package-name>
这会在注册表上打印软件包版本(即可用的最新版本):
npm view <package-name> version
如何获取已安装的版本?
npm show
显示 npm 中的最新版本,未安装
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
。
| grep <package_name>
配合得很好
--depth=0
使它更快,因为它不必递归加载依赖项
npm list -g --depth=0
用于全局安装的列表模块
npm view <package> version
- 返回软件包的最新可用版本。
npm list --depth=0
- 返回所有已安装模块的版本,没有依赖关系。
npm list
- 返回所有模块和依赖项的版本。
最后获取节点版本:node -v
npm view <package> versions
将返回软件包的所有版本,而不仅仅是最新版本。
npm info YOUR_PACKAGE version
例如
npm info grunt version
0.4.5
npm info
是 npm view
的别名,在 Docs of npm 中您会发现: 此命令显示有关包的数据并将其打印到 outfd 配置引用的流中,默认为 stdout。 [...] 如果未指定,默认版本为“最新”。这就是我投反对票的方式。
npm info YOUR_PACKAGE version
唯一有效的 :)
从包的根目录执行:
node -p "require('./package.json').version"
编辑:(因此,如果您还没有进入模块的主目录,则需要 cd
。如果您使用 npm install
安装了模块,那么它将在 node_modules/<module_name>
下)
编辑 2:根据@jeff-dickey 的回答更新
node -p "require('./package.json').version"
我刚用
npm list | grep <package name>
效果很好
在 Windows 上运行:
npm list | find <package name>
在 PowerShell 中运行:
npm list | sls <package name>
find
版本对我不起作用 - 即使使用带引号的字符串,但 powershell 运行良好
npm list -g --depth=0 |find "<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
的 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
您还可以使用以下命令检查版本:
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
这将打印 npm version
看到的 WHATEVER_PACKAGE_NAME
包的版本。
node -e "console.log(require('./package.json').version);"
我已经看到了一些非常有创意的答案,但你可以这样做(对于全局包添加 --global 开关):
npm ls package
例子:
npm ls babel-cli
`-- babel-cli@6.26.0
npm 文档说 npm -ls
此命令将以树形结构将已安装的所有软件包版本及其依赖项打印到标准输出。
要在本地或全局查看所有已安装的包,请使用以下命令:
npm list 用于本地包或 npm list -g 用于全局安装的包。 npm 列表 --depth=0 npm 列表 | sls <包名> node -v
要列出具有版本号的本地包,请使用:
npm ls --depth=0
要列出具有版本号的全局包,请使用:
npm ls -g --depth=0
npm list --depth 0
是显示所有库的命令,但您可以使用 npm-check
npm-check 是一个很好的库来管理所有关于版本系统事件的事情,它将显示库版本、新版本更新和未使用的版本等等。
安装它只需运行
npm install -g npm-check
并简单地运行
npm-check
检查显示有关软件包版本、新版本更新和未使用版本的所有内容的屏幕截图。
https://i.stack.imgur.com/2PQZW.png
它也适用于全球。试试看。希望这对某人有所帮助。
尝试:
npm list --depth 1 --global packagename
我已经构建了一个完全可以做到这一点的工具 - 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_modules
中安装了另外两个副本。
它非常快,并且具有一些不错的功能,例如制表符补全和匹配搜索。
npm list package-name 给出当前安装的版本
您可以查看 package.json 以查看已安装的软件包版本
在命令行上获取列表
npm ls
它将为您提供项目中所有已安装的软件包及其各自的版本。
对于特定的包版本
npm ls <package-name>
例如
npm ls next
它将返回版本
-- next@10.1.3
这是一个可移植的 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 包及其版本,命令为 npm ls --depth=0
,默认情况下,显示本地安装的内容。要查看全局安装的软件包,请添加 -global
参数:npm ls --depth=0 -global
。
--depth=0
返回已安装软件包的列表,不包括它们的依赖项,这是您大多数时候想要做的。
ls
是命令的名称,list
is an alias 是 ls
。
您可以使用 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
我将此添加到我的 .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
现在我要做的就是输入:
npmv 表示 npm 的版本 例如:NPM 版本是:4.2.0
npmv
npmv
npmv
注意 cut 命令上的 -d 表示分隔符,后跟 @,然后 f 表示字段,2 表示第二个字段,因为 @ 符号的任一侧都会有一个。
您可以试试这个:npm show {package} version
显示最新的软件包版本。如果您的包已过时,npm outdated
将显示它的版本信息。
如果您想检查全局安装的特定模块,请在 *nix 系统上使用:
npm list -g --depth=0 | grep <module_name>
我在用
npm 列表 --depth=0 | grep 模块名称@
它给我带来了这样的结果
├── module_name@2.1033.0
访问 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
祝你好运。
我们可以使用 npm view any-promise(your module name) -v
npm list --depth=0 | grep uuid | awk '{ print $2; }' | cut -d '@' -f 2
,但是,只要它是顶级依赖项,它就可以工作。根据最初的问题,我认为情况并非总是如此。
要仅获取已安装的版本号,请尝试:
npm list -g --depth=0 包名 | grep 包名 |剪切 -d'@' -f2
例如安装的 PM2 版本号:
npm 列表 -g --depth=0 pm2 | grep pm2 |剪切 -d'@' -f2
不定期副业成功案例分享
npm list less-middleware
那样运行它作为例子。| select-string module_name
过滤模块。或者,如果您使用的是 Git Bash(或者只是 Bash,就此而言),您可以使用grep
。list
,npm ls
也可以。事实上,许多 npm 命令都有别名,而且,如果你键入命令的子字符串,如果这个子字符串是明确的,它也可以工作;例如npm ls
、npm list
、npm lis
都是一样的。如果您想要更详细的输出,请尝试npm ll
(但可能您希望将--depth=0
添加到其中)。npm list -g | awk -F@ '/<package>/ { print $2}'
之类的操作