Complete Guide to Globally Uninstalling All Dependencies Listed in package.json with npm

Nov 23, 2025 · Programming · 14 views · 7.8

Keywords: npm | global uninstall | package.json | dependency management | Bash scripting

Abstract: This article provides an in-depth exploration of batch uninstalling globally installed npm dependencies. By analyzing the working principles of the npm uninstall command, it offers multiple effective solutions including Bash scripting methods and npm prune command usage. The article details the applicable scenarios, advantages and disadvantages of each method, and compatibility issues across different npm versions to help developers efficiently manage global dependencies.

Problem Background and Challenges

When using npm to manage project dependencies, developers often encounter situations requiring batch uninstallation of globally installed packages. Unlike npm install -g which can install all dependencies from package.json at once, the npm uninstall -g command requires explicit package names, creating inconvenience for batch operations.

Core Solution Analysis

Based on Q&A data and npm official documentation, we have extracted several effective batch uninstallation methods:

Bash Loop Uninstallation Method

For developers using Bash environments, batch uninstallation can be achieved by traversing the node_modules directory:

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

This method directly reads all package names from the node_modules directory and executes uninstallation commands one by one. Note that for global installations, you need to first navigate to the global npm directory (on Windows systems: %appdata%/npm).

Optimized Bash Command

To address compatibility issues with npm 3.3.6 and later versions, we recommend using the improved command:

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

This command uses ls -1 to list all package names, employs the tr command to replace newlines and slashes with spaces, generating a space-separated list of package names that is then passed to the npm uninstall command in one go. This approach not only resolves compatibility issues but also significantly improves execution speed.

Wildcard Uninstallation Method

Another simple approach uses wildcards:

npm uninstall *

This method needs to be executed within the node_modules directory and can quickly remove all locally installed packages. While simple and easy to use, it may be less stable than the previous methods in certain scenarios.

Development Dependency Cleanup Method

For scenarios requiring only development dependency cleanup, use:

npm prune --production

This command specifically removes development dependency packages (devDependencies) while preserving dependencies required for production environments, making it ideal for environment cleanup before deployment.

Technical Principle Deep Dive

According to npm official documentation, the npm uninstall command works by:

The main difference between global and local uninstallation lies in scope. Global uninstallation uses the -g flag and affects system-level npm package installation locations, while local uninstallation only affects the current project's node_modules directory.

Best Practice Recommendations

Based on practical experience, we recommend:

  1. Regularly clean unused global packages to avoid conflicts and version chaos
  2. Back up important package configurations before uninstallation
  3. Use version control tools to track changes in package.json
  4. Consider using tools like nvm to manage different Node.js versions and corresponding global packages

Compatibility Considerations

Different npm versions may exhibit variations in package management behavior. Particularly after npm 3.x, changes in package flattening installation strategies have affected the compatibility of certain batch operation commands. Developers are advised to choose appropriate uninstallation methods based on their specific npm versions.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.