๐งน Cleanup Interaktif Paket Node.js untuk GitHub Pages
Seiring waktu, proyek berbasis GitHub Pages yang menggunakan Node.js
sering menumpuk dependensi โ baik dari percobaan paket baru, pembaruan, atau library lama yang sudah tidak lagi digunakan.
Hal ini bisa membuat direktori node_modules
membengkak dan memperlambat proses build.
Untuk mengatasinya, kamu bisa menggunakan skrip sederhana namun powerful bernama
cleanup.js
. Skrip ini bekerja interaktif di terminal: menampilkan daftar paket tak terpakai,
membiarkan kamu memilih mana yang ingin dihapus, dan menawarkan opsi reset penuh dengan reinstall otomatis.
๐ Lokasi Penyimpanan
Simpan skrip berikut di:
ext/cleanup.js
โ๏ธ Instalasi Awal
Jalankan perintah ini satu kali saja untuk memasang dependensi yang dibutuhkan:
npm install --save-dev depcheck inquirer
๐ช Petunjuk Penggunaan
Setelah dependensi terpasang, jalankan:
node ext/cleanup.js
Lalu ikuti petunjuk di terminal. Kamu akan melihat daftar paket yang dianggap tidak digunakan.
Tekan spasi untuk memilih, lalu Enter untuk melanjutkan.
Jika diminta konfirmasi โhapus node_modules
& reinstall?โ, kamu bisa pilih Ya
untuk melakukan reset total.
๐ง Kode Lengkap ext/cleanup.js
// ===================================================================
// ๐งฉ CLEANUP.JS โ VERSI INTERAKTIF UNTUK PENGELOLAAN DEPENDENSI
// Memilih paket yang ingin dihapus + opsi reinstall otomatis
// ===================================================================
import { execSync } from "node:child_process";
import depcheck from "depcheck";
import inquirer from "inquirer";
import fs from "node:fs";
(async () => {
console.log("๐ Mengecek paket tak terpakai menggunakan depcheck...");
const result = await depcheck(process.cwd());
const unused = [
...result.dependencies,
...result.devDependencies
];
if (unused.length === 0) {
console.log("โ
Tidak ada paket tak terpakai. Semua aman!");
process.exit(0);
}
console.log("๐ฆ Paket tak terpakai ditemukan:");
console.log(unused.map(p => " - " + p).join("\\n"));
const { toRemove } = await inquirer.prompt([
{
type: "checkbox",
name: "toRemove",
message: "Pilih paket yang ingin dihapus:",
choices: unused
}
]);
if (toRemove.length === 0) {
console.log("๐ซ Tidak ada paket dipilih. Proses dibatalkan.");
process.exit(0);
}
console.log("\\n๐๏ธ Menghapus paket yang dipilih...");
execSync(`npm uninstall ${toRemove.join(" ")}`, { stdio: "inherit" });
const { reinstall } = await inquirer.prompt([
{
type: "confirm",
name: "reinstall",
message: "Hapus node_modules dan reinstall ulang?",
default: true
}
]);
if (reinstall) {
console.log("\\n๐งน Menghapus node_modules dan package-lock.json...");
fs.rmSync("node_modules", { recursive: true, force: true });
fs.rmSync("package-lock.json", { force: true });
console.log("\\n๐ฅ Instal ulang dependensi...");
execSync("npm install", { stdio: "inherit" });
}
console.log("\\nโจ Cleanup selesai! Semua paket sudah diperbarui.");
})();
๐ก Tips
Kamu bisa menambahkan perintah singkat di package.json
agar lebih praktis:
"scripts": {
"clean": "node ext/cleanup.js"
}
Dengan begitu, kamu hanya perlu menjalankan:
npm run clean
Perintah ini langsung menjalankan mode interaktif tanpa mengetik path panjang. Cocok banget buat workflow harian sebelum commit atau publish ke GitHub Pages.
๐ฏ Kesimpulan
Skrip cleanup.js adalah alat ringan namun efisien untuk menjaga kebersihan proyek Node.js. Dengan fitur interaktifnya, kamu bisa memastikan tidak ada paket usang yang tertinggal, sekaligus mereset environment dalam satu langkah. Gunakan rutin setiap kali selesai refactor atau upgrade paket besar agar proyek tetap stabil dan cepat.