如何查找已安装Node.js或npm包的版本?

这将打印npm本身的版本:

npm -v <package-name>

这将打印一个隐藏的错误:

npm version <package-name>

这将在注册表中打印软件包版本(即可用的最新版本):

npm view <package-name> version

如何获取已安装的版本?


当前回答

我刚用过

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>下。)

对于本地包使用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参数来列出已安装的包,而不列出它们的依赖项。

结合上面的一些答案,生成一个超级简单和超级快速的查找。

从项目根目录运行。无需cd到任何文件夹中,只需一行:

node-p“require('OMEPACKAGE/package.json').version”

我将此添加到.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”表示第二个字段,因为@符号的两边都有一个。