【问题标题】:How to list npm user-installed packages?如何列出 npm 用户安装的软件包?
【发布时间】:2013-07-30 01:33:24
【问题描述】:

如何仅在npm 中列出用户安装/环境包?

当我执行npm -g list 时,它会输出每个包及其依赖项,而我希望看到安装在当前工作项目或环境中的包。

【问题讨论】:

    标签: javascript node.js npm package package-managers


    【解决方案1】:

    用一些友好的 gui 列出 NPM 包!

    这是我个人喜欢的,对其他人也可能如此,在演示或会议期间也可能有所帮助。

    使用npm-gui,您可以以更好的可视化方式列出本地和全局包。

    您可以在以下位置找到该包

    运行以下

    //Once
    npm install -g npm-gui
    
    cd c:\your-prject-folder
    npm-gui localhost:9000
    

    然后打开浏览器http:\\localhost:9000

    【讨论】:

    • 如何加载全局安装的包?
    • @Ciastopiekarz 顶部菜单现在有一个 Global 链接,用于全球可用的软件包。
    【解决方案2】:

    到 2021 年底,几乎没有明显的方法可以做到这一点,尽管所有其他答案仍然有效,但我认为除了可能的更定义和完整的命令列表之外,还需要进行更新,而我正在这样做,我添加了一些其他需要它的常用命令(安装、卸载等)

    Node.js 文档实际上对此事进行了很好的解释,这是主要命令的汇总列表。

    开始之前注意:


    所有命令都将运行已安装模块的列表本地。为了运行全局级别只需在语句末尾添加-g 标志。


    列出已安装的依赖命令

    1. 查看所有已安装 npm 包的版本,包括它们的依赖项

      ❯ npm list
      
       >>> /Users/joe/dev/node/cowsay
       └─┬ cowsay@1.3.1
         ├── get-stdin@5.0.1
         ├─┬ optimist@0.6.1
         │ ├── minimist@0.0.10
         │ └── wordwrap@0.0.3
         ├─┬ string-width@2.1.1
         │ ├── is-fullwidth-code-point@2.0.0
         │ └─┬ strip-ansi@4.0.0
         │   └── ansi-regex@3.0.0
         └── strip-eof@1.0.0
      
    2. 只获取您的顶级包

      npm list --depth=0
      
    3. 通过指定名称获取特定包的版本。

      npm list <package-name>
      
    4. 在 npm 存储库中查看该软件包的最新可用版本

      npm view <package-name> version
      
    5. 使用@语法安装旧版本的 npm 包

      npm 安装@ npm install cowsay@1.2.0

    6. 列出软件包的所有先前版本

      npm view cowsay versions
      [ '1.0.0',
        '1.0.1',
        '1.0.2',
        '1.0.3',
        '1.1.0',
        '1.1.1',
        '1.1.2',
        '1.1.3',
        ....
      ]
      

    更新所有 Node.js 依赖项

    1. 安装新的次要版本或补丁版本

       npm update
      
    2. 安装新的次要版本或补丁版本但不更新 package.json

       npm update --no-save
      
    3. 为了发现软件包的新版本,这会为您提供一个存储库中的一些过时软件包的列表,这些软件包已经有一段时间没有更新了

        npm outdated
      

    其中一些更新是主要版本。运行 npm update 不会更新这些版本。主要版本永远不会以这种方式更新,因为它们(根据定义)引入了重大更改,而 npm 想为您省去麻烦。

    要将所有包更新到新的主要版本,请全局安装 npm-check-updates 包:

    npm install -g npm-check-updates
    ncu -u
    

    这会将 package.json 文件中的所有版本提示升级为依赖项和 devDependencies,因此 npm 可以安装新的主要版本


    开发依赖

    安装在开发依赖项中。

    npm install <package-name> -D
    npm install <package-name> --save-dev # same as above
    

    避免在生产环境中安装这些开发依赖项

    npm install --production
    

    卸载 npm 包

    npm uninstall <package-name>
    npm uninstall -g <package-name> # globally uninstall
    
    1. 卸载一个包并**删除package.json中的引用**

        npm uninstall <package-name> -S
        npm uninstall <package-name> --save # same as above
      

    一些带有全局标志的命令示例。

    npm list -g 
    npm list --depth=0 -g
    npm list <package-name> -g 
    npm view <package-name> version -g 
    

    附加命令

    文档

    【讨论】:

      【解决方案3】:

      我使用的是 npm 版本 7.20.3,它看起来默认深度已经是 0。所以在我的例子中,npm list --global 只显示了一个已安装的包 (npm)。我知道我安装了更多的包,我对输出感到困惑。

      最后,我尝试了--depth 参数,我能够看到所有安装的包:npm list --global --depth=1 看到安装的其他包。 (设置为 10 以查看整个依赖关系树)。

      【讨论】:

        【解决方案4】:

        您可以使用以下方法获取所有全局安装模块的列表:

        ls `npm root -g`
        

        【讨论】:

        • @user2167582 在 Windows 上,您可能需要 cygwin shell 之类的东西才能工作。
        • ls -lh `npm root -g` 将它们显示在一个不错的列表中。
        • 这个解决方案比票数最高的解决方案快得多。
        • 这个解决方案很好,但是npm list -g --depth=0 打印出很好的版本。无论如何,我不知道这个命令,所以 +1。
        • npm root -g | gci 在 Windows 上的 Powershell 中
        【解决方案5】:
        npm list -g --depth=0
        
        • npm:Node 包管理器命令行工具
        • list -g:显示在用户文件夹中找到的每个包的树状结构(没有-g 选项,它只显示当前目录的包)
        • --depth 0 / --depth=0:避免在树视图中包含每个包的依赖项

        【讨论】:

        • 返回空结果。我的 npm 版本是 3.6.0。
        • 为什么我运行npm help ls时没有提到--depth=0选项?
        • 如果您使用--prefix 将模块安装在另一个文件夹中,那么您需要将--prefix 也添加到此npm list 命令中。
        • @Fabricio,您可以运行 npm config set depth 0 将其设为默认值。
        • 添加| grep -v "duped" 以将重复的依赖项删除到列表中也可能会很好
        【解决方案6】:

        我使用npm -g outdated --depth=0 列出过时的版本
        在全局空间中。

        【讨论】:

          【解决方案7】:

          你可以试试NPM Desktop manager

          一键安装/卸载devglobal状态的包。

          【讨论】:

            【解决方案8】:

            本地模块使用npm list --depth 0

            敌人全球模块npm list -g --depth 0

            Example local npm module Example global npm module

            【讨论】:

              【解决方案9】:

              作为简写,你可以运行:

              npm ls -g --depth=0
              

              【讨论】:

                【解决方案10】:

                使用 npm list 并使用 grep 按包含过滤

                例子:

                npm list -g | grep name-of-package
                

                【讨论】:

                  【解决方案11】:

                  Node 有本地模块和全局模块的概念

                  本地模块位于当前项目目录中。

                  全局模块通常位于用户的主目录,但我们可以更改全局模块所在的路径。

                  1. 列出当前目录中的本地模块:npm list
                  2. 列出全局模块:npm list --global OR npm list --g // 它将列出所有顶级模块及其依赖项
                  3. 仅列出顶级(已安装模块)全局模块:npm list -g --depth=0

                  【讨论】:

                    【解决方案12】:

                    截至 2015 年 12 月 13 日

                    虽然我发现接受的答案 100% 正确且有用,但希望根据我自己的经验对其进行一些扩展,并希望对其他人也有所帮助。 (这里我交替使用术语包和模块)

                    在回答问题时,是的,接受的答案是:

                    npm list -g --depth=0
                    

                    您可能希望检查全局安装的特定模块,在 *nix 系统上 / 当 grep 可用时。这在检查您正在使用的模块版本时特别有用(全局安装,如果检查本地模块,只需删除 -g 标志):

                    npm list -g --depth=0 | grep <module_name>
                    

                    如果您想查看特定模块的所有可用(远程)版本,请执行以下操作:

                    npm view <module_name> versions
                    

                    注意,versions 是复数形式。这将为您提供可供选择的版本的完整列表。

                    最新远程版本:

                    npm view <module_name> version  
                    

                    注意,版本是单数。

                    要了解哪些包需要更新,可以使用

                    npm outdated -g --depth=0
                    

                    要更新全局包,可以使用

                    npm update -g <package>
                    

                    要更新所有全局包,您可以使用:

                    npm update -g
                    

                    (但是,对于低于 2.6.1 的 npm 版本,另请参阅 this link,因为有一个特殊脚本建议用于全局更新所有包)。

                    上述命令应该适用于 NPM 版本 1.3.x、1.4.x、2.x 和 3.x

                    【讨论】:

                    • 更新特定的全局包:npm update -g &lt;package&gt;。我相信updateinstall 更可取,因为 npm 会很聪明,并且只有在指定的包过时时才进行安装。
                    • @Talespin_Kit 可能是 screentogif
                    • @Talespin_Kit ShareX 非常适合创建和共享 gif 屏幕截图(以及任何其他屏幕截图)。
                    【解决方案13】:
                    npm ls
                    

                    npm list 只是npm ls 的别名

                    用于扩展信息使用

                    npm la    
                    npm ll
                    

                    您始终可以在末尾设置--depth=0 以获得第一级深度。

                    npm ls --depth=0
                    

                    您可以查看开发和生产包。

                    npm ls --only=dev
                    npm ls --only=prod
                    

                    json 格式显示信息

                    npm ls --json=true
                    

                    默认为false

                    npm ls --json=false
                    

                    您可以坚持使用长格式来显示扩展信息。

                    npm ls --long=true
                    

                    您可以显示可解析的输出而不是树状视图。

                    npm ls --parseable=true
                    

                    您可以在全局安装前缀中列出包,而不是在当前项目中。

                    npm ls --global=true
                    npm ls -g // shorthand
                    

                    您可以找到here 的完整文档。

                    【讨论】:

                      【解决方案14】:

                      对于项目依赖项使用:

                      npm list --depth=0
                      

                      对于全局依赖项使用:

                      npm list -g --depth=0
                      

                      【讨论】:

                        【解决方案15】:

                        查看所有已安装包的列表。

                        $ npm ls --parseable | awk '{gsub(/\/.*\//,"",$1); print}'| sort -u
                        

                        显示可解析的 npm 包列表https://docs.npmjs.com/cli/ls#parseable

                        【讨论】:

                        • 这太棒了!我怎样才能只显示开发依赖项?
                        【解决方案16】:

                        Node_modules 包含用户安装的软件包,因此将目录更改为 node_modules 并列出项目。 Core Moduleslib/ 文件夹的节点源中定义。

                        Example:

                             example@example:~/:~/node_modules$ ls
                             express  maxmind-native  node-whois  socket.io  ua-parser-js
                             geoip    mongoskin       pdfkit      tail       zeromq
                             maxmind  nodemailer      request     ua-parser  zmq
                        

                        【讨论】:

                          【解决方案17】:

                          一种方法可能是使用以下方法查找模块的根目录:

                          npm root
                          /Users/me/repos/my_project/node_modules
                          

                          然后列出那个目录...

                          ls /Users/me/repos/my_project/node_modules
                          grunt                   grunt-contrib-jshint
                          

                          本例中用户安装的包是 grunt 和 grunt-contrib-jshint

                          【讨论】:

                          • 为什么不用官方内置的 npm 命令呢? npm list -g --depth=0
                          • 这种方式可以帮助开发者了解底层发生了什么
                          • 这不是 100% 正确的。当我运行命令npm root 时,它告诉我:Users/me/node_modules 这是不正确的。我的 node_modules 住在别的地方。我想这取决于你如何安装节点。我使用brew 来安装我的软件。我猜这是如果您使用他们的软件包安装程序从他们的网站安装节点?
                          • 我认为这取决于您的环境变量。查看您环境中设置的 $NPM... 变量。我有一个自定义设置,使用 virtualenv 和 activate 挂钩根据项目使用的内容从头开始完全重写 $PATH。
                          • 对我来说,我的 npm 坏了,所以我无法使用这些命令。我想做一个完整的重新安装,所以我需要知道我已经全局安装了哪些包来重建。
                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2013-06-15
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2018-11-18
                          • 2013-10-06
                          相关资源
                          最近更新 更多