npm command to uninstall or prune unused packages in Node.js

后端 未结 3 582
迷失自我
迷失自我 2020-12-04 04:46

Is there a way to simply uninstall all unused (undeclared) dependencies from a Node.js project (ones that are no longer defined in my package.json.) When I upda

相关标签:
3条回答
  • 2020-12-04 05:17

    If you're not worried about a couple minutes time to do so, a solution would be to rm -rf node_modules and npm install again to rebuild the local modules.

    0 讨论(0)
  • 2020-12-04 05:35

    Note: Recent npm versions do this automatically when package-locks are enabled, so this is not necessary except for removing development packages with the --production flag.


    Run npm prune to remove modules not listed in package.json.

    From npm help prune:

    This command removes "extraneous" packages. If a package name is provided, then only packages matching one of the supplied names are removed.

    Extraneous packages are packages that are not listed on the parent package's dependencies list.

    If the --production flag is specified, this command will remove the packages specified in your devDependencies.

    0 讨论(0)
  • You can use npm-prune to remove extraneous packages.

    npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]
    

    This command removes "extraneous" packages. If a package name is provided, then only packages matching one of the supplied names are removed.

    Extraneous packages are packages that are not listed on the parent package's dependencies list.

    If the --production flag is specified or the NODE_ENV environment variable is set to production, this command will remove the packages specified in your devDependencies. Setting --no-production will negate NODE_ENV being set to production.

    If the --dry-run flag is used then no changes will actually be made.

    If the --json flag is used then the changes npm prune made (or would have made with --dry-run) are printed as a JSON object.

    In normal operation with package-locks enabled, extraneous modules are pruned automatically when modules are installed and you'll only need this command with the --production flag.

    If you've disabled package-locks then extraneous modules will not be removed and it's up to you to run npm prune from time-to-time to remove them.

    Use npm-dedupe to reduce duplication

    npm dedupe
    npm ddp
    

    Searches the local package tree and attempts to simplify the overall structure by moving dependencies further up the tree, where they can be more effectively shared by multiple dependent packages.

    For example, consider this dependency graph:

    a
    +-- b <-- depends on c@1.0.x
    |    `-- c@1.0.3
    `-- d <-- depends on c@~1.0.9
         `-- c@1.0.10
    

    In this case, npm-dedupe will transform the tree to:

     a
     +-- b
     +-- d
     `-- c@1.0.10
    

    Because of the hierarchical nature of node's module lookup, b and d will both get their dependency met by the single c package at the root level of the tree.

    The deduplication algorithm walks the tree, moving each dependency as far up in the tree as possible, even if duplicates are not found. This will result in both a flat and deduplicated tree.

    0 讨论(0)
提交回复
热议问题