未使用の(宣言されていない)すべての依存関係をNode.jsプロジェクト(私ので定義されていないもの)から単にアンインストールする方法はありpackage.json
ますか。
未使用の(宣言されていない)すべての依存関係をNode.jsプロジェクト(私ので定義されていないもの)から単にアンインストールする方法はありpackage.json
ますか。
回答:
注:最近のnpm
バージョンでは、パッケージロックが有効になっているときにこれが自動的に行われるため、--production
フラグを使用して開発パッケージを削除する場合を除いて、これは必要ありません。
にnpm prune
リストされていないモジュールを削除するために実行しますpackage.json
。
からnpm help prune
:
このコマンドは、「余分な」パッケージを削除します。パッケージ名を指定すると、指定した名前のいずれかに一致するパッケージのみが削除されます。
無関係なパッケージとは、親パッケージの依存関係リストにリストされていないパッケージです。
--production
フラグが指定されている場合、このコマンドはdevDependenciesで指定されているパッケージを削除します。
package.json
ます。そうですか?したがって、次の更新またはインストールでは、それらを再インストールする必要があります。
node_modules
ディレクトリ内に格納されているため、モジュールとともに削除されます。
package.json
おきます。を実行するとnpm prune
、node_modules
依存関係を含む独自のフォルダーを含むすべてのカルマが削除されることを期待しています。bowerの依存関係(bower-json、bower-logger、chmodr、fstream、globなど)はどうですか?技術的には、それらは私のプロジェクトのにリストされていませんpackage.json
。それらは削除されていますか?
node_modules
はなく、内部 node_modules/bower/node_modules
で「保護」node_modules/bower/package.json
。パッケージの依存関係とパッケージの依存関係は混在していません。
あなたがこれを行うには数分時間を心配していない場合は、解決策は、になりますrm -rf node_modules
し、npm install
ローカルモジュールを再構築するために、再び。
node_modules
では、package.json
ファイルが再現可能な依存関係グラフを記述していることも確認します。の削除と再インストールnode_modules
は、基本的に展開テストです。
npm prune
1つのイオタを助けなかったが、これは助けた。私の問題は壊れたシンボリックリンクでした。
npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]
このコマンドは、「余分な」パッケージを削除します。パッケージ名を指定すると、指定した名前のいずれかに一致するパッケージのみが削除されます。
無関係なパッケージとは、親パッケージの依存関係リストにリストされていないパッケージです。
場合--productionのフラグが指定されているかNODE_ENVの環境変数がに設定されている生産は、このコマンドは、あなたに指定されたパッケージが削除されますdevDependenciesを。設定--no-生産することは否定されますNODE_ENVがに設定されている生産。
--dry-runフラグが使用されている場合、実際には変更は行われません。
場合--jsonフラグが使用される変更NPMプルーン製の(またはで作られたであろう--dryラン)JSONオブジェクトとして印刷されます。
パッケージロックが有効になっている通常の操作では、モジュールがインストールされると無関係なモジュールが自動的にプルーニングされ、このコマンドに必要なのは--productionフラグを指定した場合のみです。
パッケージロックを無効にした場合、無関係なモジュールは削除されず、npm pruneを時々実行してそれらを削除するのはあなた次第です。
npm dedupe
npm ddp
ローカルパッケージツリーを検索し、依存関係をツリーの上位に移動することで全体的な構造を簡略化しようとします。依存関係を複数の依存パッケージでより効果的に共有できます。
たとえば、次の依存関係グラフを考えてみます。
a
+-- b <-- depends on c@1.0.x
| `-- c@1.0.3
`-- d <-- depends on c@~1.0.9
`-- c@1.0.10
この場合、npm-dedupeはツリーを次のように変換します。
a
+-- b
+-- d
`-- c@1.0.10
ノードのモジュールルックアップの階層的な性質により、bとdはどちらも、ツリーのルートレベルで単一のcパッケージによって依存関係が満たされます。
重複排除アルゴリズムはツリーをウォークし、重複が見つからない場合でも、各依存関係をツリー内で可能な限り上に移動します。これにより、フラットなツリーと重複排除されたツリーの両方が生成されます。
node_modules
それぞれから削除されたときにフォルダーを削除するつもりpackage.json
ですか?