首页 文章

找到已安装的npm软件包的版本

提问于
浏览
1697

如何找到已安装node.js / npm package 的版本?

这将打印npm本身的版本:

npm -v <package-name>

这打印出一个神秘的错误:

npm version <package-name>

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

npm view <package-name> version

我如何获得 installed version

20 回答

  • 12

    要在本地或全局查看所有已安装的软件包,请使用以下命令:

    • npm list 用于本地软件包, npm list -g 用于全局安装的软件包 .

    • npm list --depth=0

    • npm list | sls <package name>

    • node -v

  • 9

    我刚刚使用了 npm list | grep <package name> ,效果很好

    在Windows上运行:

    npm list | find <package name>

    在PowerShell中运行:

    npm list | sls <package name>

  • 75

    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
    
  • 2062

    我把它添加到我的.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 version is: 4.2.0

    • npmv <package-name> 为本地版本,例如: 0.8.08
      全球版

    • npmv <package-name> g 例如: 0.8.09

    • npmv <package-name> l 最新版本,例如: 0.8.10

    注意-d on cut命令表示分隔符,后跟@,然后f表示字段2表示第二个字段,因为@符号的任一侧都有 .

  • 12

    您也可以通过此命令检查版本 .

    npm info <package name > version

  • 6

    这是一个可移植的Unix(使用 grepsed )单行,返回全局安装的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 命令删除周围的字符 .

  • 177

    结合上面的一些答案,产生一个超级简单和超快速的查找 .
    从项目根目录运行 . 无需 cd 进入任何文件夹,只需1行:

    node -p "require('SOMEPACKAGE/package.json').version"

  • 40

    试试:

    npm list --depth 1 --global packagename
    
  • 2

    我已经构建了一个完全相同的工具 - 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-table2karmanode_modules 中安装了另外两个副本 .

    它非常快,并且有一些很好的功能,如标签完成和匹配搜索 .

  • 5
    npm info YOUR_PACKAGE version
    

    例如

    npm info grunt version
    0.4.5
    
  • 9

    如果你足够勇敢(并且安装了 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 可以看到 .

  • 30

    您可以尝试这样做: npm show {package} version 显示最新的软件包版本 . 如果您的软件包已过时, npm outdated 将显示版本信息 .

  • 14

    我们可以使用 npm view any-promise (您的模块名称)-v

  • 6

    npm view <package> version - 返回包中的最新可用版本 .

    npm list --depth=0 - 返回所有已安装模块的版本,没有依赖项 .

    npm list - 返回所有模块和依赖项的版本 .

    最后得到节点版本: node -v

  • 10

    如果您同意安装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
    
  • 8

    从包的根目录做:

    node -p "require('./package.json').version"
    

    EDIT :(所以你需要 cd 进入模块的主目录,如果你还没有 . 如果你已经用 npm install 安装了模块,那么它将在 node_modules/<module_name> 下)

    EDIT 2 :根据@ jeff-dickey的回答更新

  • 6

    访问package.json

    您可以使用以下命令访问包的 package.jsonbower.json

    notepad ./node_modules/:packageName/package.json

    这将在 notepad 中打开 package.json ,其中包含 command:packageNameversion number .

    例如:

    notepad ./node_modules/vue-template-compiler/package.json

    祝好运 .

  • 2

    对于本地包裹

    npm list --depth=0
    

    对于全球包

    npm list  -g --depth=0
    
  • 10

    找出 locallywithout their dependencies 安装的软件包的另一种快速方法是使用:

    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 .

  • 747

    您可以使用npm view [module]版本,npm info [module]版本,npm show [module]版本或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
    

相关问题