๐Ÿงน 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.

๐Ÿ“˜ ๐Ÿฆ ๐Ÿ’ฌ ๐Ÿ’ผ
×