【问题标题】:Command to remove all npm modules globally全局删除所有 npm 模块的命令
【发布时间】:2012-03-06 05:01:55
【问题描述】:

是否有删除所有全局 npm 模块的命令?如果没有,你有什么建议?

【问题讨论】:

    标签: node.js npm


    【解决方案1】:

    以下命令删除所有全局 npm 模块。注意:这在 Windows 上不起作用。有关有效的 Windows 版本,请参阅Ollie Bennett's Answer

    npm ls -gp --depth=0 | awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' | xargs npm -g rm
    

    这是它的工作原理:

    • npm ls -gp --depth=0 列出所有全局顶级模块(参见cli documentation for ls
    • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' 打印所有实际上不是 npm 本身的模块(不以 /npm 结尾)
    • xargs npm -g rm 全局删除所有通过前一个管道的模块

    【讨论】:

    • 不要成为 awk 高尔夫球手,这可以在没有 grep 的单个 awk 命令中完成:awk -F' |@' '/@/ {if ($(NF-1) != "npm") {print $(NF-1)}}' 说明:空格或 @ 分隔,只匹配带有 @ 的行,模块名称将是倒数第二个匹配项 ($(NF-1)),因此仅在不是npm时才打印
    • 警告:新版本没有过滤掉 npm 模块。你不想删除那个。
    • 我也运行了新版本,但没有阅读 cmets。始终阅读评论。以下是如何恢复 NPM: curl npmjs.org/install.sh |嘘
    • 哇。 NPM 无法轻松卸载东西。使用 bundler 和 gems,卸载所有东西是微不足道的,你必须使用 grep 等事实是一个可怕的设计。有没有更简单的方法来做到这一点?谁真正记得答案中所需的代码?
    • @neverfox 和其他人:已修复,npm 本身不再被移除。很抱歉给您带来不便
    【解决方案2】:

    对于那些使用 Windows 的用户,删除所有全局安装的 npm 包的最简单方法是删除以下内容:

    C:\Users\username\AppData\Roaming\npm

    您可以通过在资源管理器、运行提示符或开始菜单中键入 %appdata%/npm 快速到达那里。

    【讨论】:

    • 感谢这个,npm-cache 怎么样,我也应该删除它吗?
    • 如果存在 npm 文件夹,请不要删除它
    • 我正在重新安装所有软件包,再次运行 npm install 时遇到了 EINTEGRITY 错误。我也不得不删除我的package-lock.json 文件。
    • @Neil npm cache clean --force
    • 我也不得不删除C:\Users\[username]\node_modules
    【解决方案3】:

    我试过Kai Sternad's solution,但对我来说似乎并不完美。在 deps 树本身的最后一个 awk 之后留下了很多特殊符号。

    所以,我想出了自己对 Kai Sternad 解决方案的修改(在 cashmere's idea 的帮助下):

    npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm|)$' | xargs -r npm -g rm
    

    npm ls -gp --depth=0可解析 格式列出所有全局安装的 npm 模块:

    /home/leonid/local/lib
    /home/leonid/local/lib/node_modules/bower
    /home/leonid/local/lib/node_modules/coffee-script
    ...
    

    awk -F/node_modules/ '{print $2}' 从路径中提取模块名称,形成所有全局安装模块的列表。

    grep -vE '^(npm|)$' 删除 npm 本身和空行。

    xargs -r npm -g rm 为列表中的每个模块调用npm -g rm

    Kai Sternad 的解决方案一样,它只能在 *nix 下工作。

    【讨论】:

    • 这些文件存储在哪里,我讨厌这种方法。某处不是只有一个全局 package.json 吗?
    • @EvanCarroll 不,没有这样的文件,但是npm 将其所有全局模块安装到同一目录。确切位置可能会有所不同,但通常是/usr/local/lib/node_modules
    • 仅供参考,这个也删除了 npm
    • 此命令适用于 OSX,不会删除 npm npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm)$' | xargs npm -g rm
    • 此命令无法处理作用域包(如@angular/cli)。我为awk 添加了另一个匹配器,我的工作命令如下所示:npm ls -gp --depth=0 | awk -F/ '/node_modules\/@/ {print $(NF-1)"/"$NF} /node_modules\/[^@]/ && !/\/npm$/ {print $NF}' | xargs npm -g rm
    【解决方案4】:
    sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}'  | sudo xargs npm remove -g
    

    为我工作

    • sudo npm list -g --depth=0. 列出所有顶级安装
    • awk -F ' ' '{print $2}'摆脱├──
    • awk -F '@' '{print $1}' 获取 '@' 之前的部分
    • sudo xargs npm remove -g 全局删除包

    【讨论】:

    • 截至 14 年 6 月,此版本最适合我。唯一的补充可能是从列表中过滤掉“UNMET”依赖项,但这并不重要,因为npm remove UNMET 只是执行 NOOP。
    • 将添加 grep -v npm 这样 npm 本身就不会被删除:sudo npm list -g --depth=0. | grep -v npm | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
    • 好了,你的 npm!
    【解决方案5】:

    对于那些使用 Powershell 的人:

    npm -gp ls --depth=0 | ForEach-Object { Get-Item $_ } | Where { $_.Name -ne 'npm' } | ForEach-Object { npm rm -g $_.Name }
    

    清除缓存:

    npm cache clear
    

    【讨论】:

      【解决方案6】:

      只需切换到您的%appdata%/npm 目录并运行以下命令...

      for package in `ls node_modules`; do npm uninstall $package; done;
      

      编辑:此命令与 npm 3.3.6(节点 5.0)中断。我现在正在使用以下 Bash 命令,我已将其映射到 .bashrc 文件中的 npm_uninstall_all:

      npm uninstall `ls -1 node_modules | tr '/\n' ' '`
      

      增加奖金?它的速度更快!

      https://github.com/npm/npm/issues/10187

      How do you uninstall all dependencies listed in package.json (NPM)?

      【讨论】:

      • 喜欢这个。更快更简单 :) 我只是在 tr 之前使用了 grep -v npmn
      【解决方案7】:

      如果您想删除所有已安装的软件包,您可以使用npm -g ls 命令找到它们,然后使用npm -g rm 将它们删除。

      【讨论】:

        【解决方案8】:

        在窗口中转到 “C:\Users{username}\AppData\Roaming”目录并手动删除npm文件夹

        【讨论】:

        • 这在 Windows 上对我们来说很简单/有用。谢谢。
        【解决方案9】:

        如果你安装了jq,你甚至可以不用grep/awk/sed:

        npm ls -g --json --depth=0 |
          jq -r '.dependencies|keys-["npm"]|join("\n")' |
          xargs npm rm -g
        

        在 Debian 和派生系统上,您可以使用以下命令安装 jq

        sudo apt-get install jq
        

        【讨论】:

        • 这是一个恰当的json 风格的可靠答案。
        • 如果需要 sudo 则:npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs sudo npm rm -g
        【解决方案10】:

        OP 未指定操作系统。对于Windows,此脚本可用于核对本地和用户的全局模块和缓存。

        我在 linux 上注意到全局根对系统来说是真正的全局而不是给定用户。因此,对于共享系统而言,删除全局根可能不是一个好主意。除此之外,如果有兴趣,我可以将脚本移植到 bash

        对于 Windows,保存到 cmd 文件以运行。

        @ECHO OFF
        SETLOCAL EnableDelayedExpansion 
        SETLOCAL EnableExtensions
        
        SET /A ecode=0
        
        :: verify
        SET /P conf="About to delete all global and local npm modules and clear the npm cache. Continue (y/[n])?
        IF /I NOT "%conf%"=="y" (
          ECHO operation aborted
          SET /A ecode=!ecode!+1
          GOTO END
        )
        
        :: wipe global and local npm root
        FOR %%a IN ("" "-g") DO (
        
          :: get root path into var
          SET cmd=npm root %%~a
          FOR /f "usebackq tokens=*" %%r IN (`!cmd!`) DO (SET npm_root=%%r)
        
          :: paranoid
          ECHO validating module path "!npm_root!"
          IF "!npm_root:~-12!"=="node_modules" (
            IF NOT EXIST "!npm_root!" (
              ECHO npm root does not exist "!npm_root!"
            ) ELSE (
              ECHO deleting "!npm_root!" ...
              :: delete
              RMDIR /S /Q "!npm_root!"
            )
          ) ELSE (
              ECHO suspicious npm root, ignoring "!npm_root!"
          )
        )
        
        :: clear the cache
        ECHO clearing the npm cache ...
        call npm cache clean
        
        :: done
        ECHO done
        
        :END
        
        ENDLOCAL & EXIT /b %ecode%
        

        【讨论】:

          【解决方案11】:

          你做得很好。这是将建议合并到一行代码中。

          npm rm -g `npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | tr '/\n' ' '`
          

          有什么不同?卸载将在单个命令中完成,例如:npm rm -g *** *** ***

          【讨论】:

            【解决方案12】:

            对于yarn global

            nano ~/.config/yarn/global/package.json
            <Manually remove all packages from package.json>
            yarn global add
            

            或者,如果您不关心 package.json 内部的实际内容

            echo {} >  ~/.config/yarn/global/package.json && yarn global add
            

            这也应该适用于 NPM,但我不确定 NPM 全局存储在哪里。

            【讨论】:

              【解决方案13】:

              您可以在以下位置找到所有已安装的 npm 包:

              C:\Users\username\AppData\Roaming\npm
              

              并删除 npm 中要删除的内容。

              如果 AppData 未显示,则表示它已隐藏,您可以在文件资源管理器中查看并选中隐藏项目,然后您可以看到所有隐藏的文件夹。

              【讨论】:

                【解决方案14】:

                对于 Windows:

                rmdir /s /q "%appdata%/npm"
                

                【讨论】:

                  【解决方案15】:

                  如果您使用的是 Windows,并且想要删除/卸载所有 node_modules,那么您需要执行以下步骤。

                  1. 转到 Windows 命令提示符
                  2. 导航到 node_modules 目录(不在 node_modules 文件夹内
                  3. 键入下面的命令并等待 1-2 分钟,它将卸载 node_module 中的所有目录

                     rmdir /s /q node_modules
                    

                  希望这对windows上的一些人有所帮助

                  【讨论】:

                    【解决方案16】:

                    如果您有 Intellij Webstorm,则可以使用其内置的图形包管理器。

                    以 root 身份打开它并创建一个 emtpy 项目。去

                    文件 > 设置 > 语言和框架 > Node.js 和 NPM

                    在那里您将看到所有已安装的软件包。卸载很简单,你可以选择和取消选择任何你想卸载的包,Ctrl+a woks 也可以。

                    【讨论】:

                      【解决方案17】:

                      对于不涉及文件浏览器的更手动的方法,不关心安装位置,以后不太可能中断,并且 100% 跨平台兼容,并且感觉更安全由于有额外的步骤,请使用这个。

                      • npm ls -g --depth=0
                      • 复制输出
                      • 粘贴到最喜欢的代码编辑器中(我使用 vsCode。很棒的多光标编辑)
                      • 检查您想要保留的任何包(nodemon、yarn 等等)删除这些行
                      • 删除+-- 或其他行装饰器的每个实例
                      • 删除所有版本信息(例如'@2.11.4')
                      • 将所有项目放在同一行,空格分隔
                      • npm uninstall -g 添加到该行的开头。
                        • 我的看起来像npm uninstall -g @angular/cli @vue/cli express-generator jest mocha typescript bindings nan nodemon yarn,但我没有在这台机器上全局安装很多包。
                      • 复制行
                      • 在终端中粘贴,如果尚未从复制/粘贴中添加,请按 Enter
                      • 查找终端中的任何错误。
                      • 检查npm ls -g 以确保它是完整的。如果重新安装了某些东西,请冲洗并重复

                      其他仅限 cli 的方法非常适合计算机管理员从同一个 ssh 或 Puppet 事物同时为 100 台几乎相同的计算机执行某些操作。但是,如果您在一年中只这样做一次,甚至 5 次,这会容易得多。

                      【讨论】:

                        【解决方案18】:
                        npm ls -gp | awk -F/ '/node_modules/&&!/node_modules.*node_modules/&&!/npm/{print $NF}' | xargs npm rm -g
                        

                        【讨论】:

                          【解决方案19】:

                          使用此代码卸载任何包:

                          npm rm -g <package_name>
                          

                          【讨论】:

                          • 问题清楚地说是ALL,而不是具体的包名。
                          【解决方案20】:

                          由于这是搜索中的最佳答案,因此我将其发布在这里,因为它是我过去用来清洁计算机切换笔记本电脑的解决方案。

                          cd ~/Documents # or where you keep your projects
                          find . -name "node_modules" -exec rm -rf '{}' +
                          

                          来源:https://winsmarts.com/delete-all-node-modules-folders-recursively-on-windows-edcc9a9c079e

                          【讨论】:

                            【解决方案21】:

                            这是我尝试过的更优雅的解决方案,我让 npm 为我完成所有工作。

                            # On Linux Mint 19.1 Cinnamon
                            # First navigate to where your global packages are installed.
                            
                            $ npm root # returns /where/your/node_modules/folder/is
                            $ cd /where/your/node_modules/folder/is # i.e for me it was cd /home/user/.npm-packages/lib/node_modules
                            

                            然后,如果您执行npm uninstallnpm remove,这些模块将被视为项目的正常依赖项。完成后它甚至会生成一个 package-lock.json 文件:

                            $ npm remove <package-name> # you may need sudo if it was installed using sudo  
                            

                            【讨论】:

                              【解决方案22】:

                              如果您有适用于 Windows 的 MSYS:

                              rm -rf ${APPDATA//\\/\/}/npm
                              

                              【讨论】:

                                【解决方案23】:

                                npm README.md 声明:

                                如果您想删除所有已安装的软件包, 然后你可以使用npm ls命令找到它们,然后npm rm 删除它们。

                                要删除 npm 0.x 遗留的垃圾,您可以使用包含的 clean-old.sh 脚本文件。您可以像这样方便地运行它:

                                   npm explore npm -g -- sh scripts/clean-old.sh
                                

                                【讨论】:

                                  【解决方案24】:

                                  在 macOS 中,我相信您可以简单地删除用户目录中的 .npm-global 文件夹。

                                  macOS 用户目录中的 .npm 和 .npm-global 文件夹:

                                  【讨论】:

                                    【解决方案25】:

                                    只需在下面使用 MAC,

                                    sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man//node.}

                                    【讨论】:

                                      【解决方案26】:

                                      sed 解决方案

                                      npm -gp ls | sed -r '/npm$|(node_modules.*){2,}/d; s:.*/([^/]+)$:\1:g' | xargs npm rm -g
                                      

                                      【讨论】:

                                        【解决方案27】:

                                        只需放入您的控制台:

                                        sudo npm list -g --depth=0。 | awk -F ' ' '{打印 $2}' | awk -F '@' '{打印 $1}' | sudo xargs npm remove -g

                                        它对我有用...

                                        【讨论】:

                                        • 在同一页面上已经提到了here 的确切解决方案。
                                        猜你喜欢
                                        • 1970-01-01
                                        • 2018-06-13
                                        • 1970-01-01
                                        • 2017-05-21
                                        • 2023-04-03
                                        • 2013-09-26
                                        • 2010-10-06
                                        • 2017-03-28
                                        相关资源
                                        最近更新 更多