Node.js プロジェクトで肥大化する node_modules をスリム化:未使用パッケージを見つけて削除する方法
Node.js プロジェクトで未使用のパッケージを見つける方法
以下に、未使用のパッケージを見つけるためのいくつかの方法を紹介します。
npm outdated
コマンドは、プロジェクトで使用されているパッケージのうち、最新バージョンではないパッケージの一覧を表示します。このコマンドを実行して、以下の条件に合致するパッケージを探します。
- 最新バージョンではない
dependencies
またはdevDependencies
に登録されている
これらの条件に合致するパッケージは、使用されていない可能性が高いです。
- プロジェクトのソースコードで使用されていない
依存関係分析ツールを使う
unused-dependencies
や dependency-cruiser
などの依存関係分析ツールを使うと、プロジェクトで使用されていないパッケージを検出することができます。これらのツールは、プロジェクトのソースコードを分析して、実際に使用されているパッケージを特定します。
手動で確認する
上記の方法で検出できない場合、package.json
に登録されているパッケージを手動で確認する必要があります。各パッケージについて、以下の点を考慮します。
- プロジェクトのビルドに必要か
- テストに必要か
これらの点を考慮して、使用されていないと思われるパッケージを削除することができます。
未使用のパッケージを見つけたら、npm uninstall
コマンドを使って削除することができます。
npm uninstall <パッケージ名>
注意事項
- パッケージを削除する前に、必ずバックアップを取ってください。
- 使用されていないと思われるパッケージであっても、削除前にその役割をよく理解しておいてください。
- 依存関係の変更は、プロジェクトの動作に影響を与える可能性があります。変更後は、必ずテストを実施してください。
const fs = require('fs');
const path = require('path');
function findUnusedPackages(projectDir) {
const packageJsonPath = path.join(projectDir, 'package.json');
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath));
const allDependencies = Object.keys(packageJson.dependencies).concat(
Object.keys(packageJson.devDependencies)
);
const usedDependencies = new Set();
// プロジェクトのソースコードを解析して、使用されているパッケージを特定する
fs.readdirSync(projectDir).forEach((file) => {
const filePath = path.join(projectDir, file);
if (fs.lstatSync(filePath).isFile() && filePath.endsWith('.js')) {
const code = fs.readFileSync(filePath, 'utf-8');
allDependencies.forEach((dependency) => {
if (code.indexOf(dependency) !== -1) {
usedDependencies.add(dependency);
}
});
}
});
// 使用されていないパッケージの一覧を表示する
const unusedDependencies = allDependencies.filter((dependency) => !usedDependencies.has(dependency));
console.log('Unused packages:');
unusedDependencies.forEach((dependency) => {
console.log(` * ${dependency}`);
});
}
findUnusedPackages(process.cwd());
このコードは、以下の処理を行います。
package.json
からすべての依存関係を取得する- プロジェクトのソースコードを解析して、使用されているパッケージを特定する
- 使用されていないパッケージの一覧を表示する
このコードを参考に、ご自身のプロジェクトに合った方法で未使用のパッケージを見つけて削除してください。
- Visual Studio Code などの IDE を使う
Visual Studio Code などの IDE には、未使用のパッケージを検出する機能が搭載されている場合があります。これらの機能を使うと、簡単に未使用のパッケージを見つけることができます。
- オンラインツールを使う
https://stackoverflow.com/questions/22675725/how-to-find-unused-packages-in-package-json などのオンラインツールを使うと、プロジェクトの package.json
をアップロードして、未使用のパッケージを検出することができます。
どの方法を使う場合でも、パッケージを削除する前に必ずバックアップを取ってください。また、使用されていないと思われるパッケージであっても、削除前にその役割をよく理解しておいてください。依存関係の変更は、プロジェクトの動作に影響を与える可能性があります。変更後は、必ずテストを実施してください。
node.js npm dependencies