๐งน Pembersihan Otomatis Dependencies Node.js
Pernah ngerasa proyek Node.js kamu makin berat gara-gara dependencies yang sebenernya tidak kepakai? Kalau dibiarin, repo kamu cuma jadi "gudang sampah" kode. Di sini saya bagiin cara bersihin itu semua secara non-interaktifโcocok banget buat kamu yang pengen automasi di GitHub Actions tanpa drama ketik "y/n" di terminal.
๐ Deteksi Cerdas
Mencari paket yang terdaftar di package.json tapi absen di kode sumber.
โก Tanpa Konfirmasi
Skrip berjalan mandiri, langsung eksekusi tanpa nunggu jawaban kamu.
โป๏ธ Fresh Install
Hapus node_modules dan pasang ulang biar semuanya bersih dari cache.
๐ช Skrip Utama: cleanup-auto.js
Simpan skrip sakti ini di folder ext/cleanup-auto.js. Skrip ini pakai library depcheck buat nyari mana yang cuma "numpang" doang.
#!/usr/bin/env node
/
* CLEANUP AUTO v1.1
* Menghapus paket tidak terpakai secara otomatis
*/
import { execSync } from 'node:child_process';
import depcheck from 'depcheck';
import fs from 'node:fs';
(async () => {
console.log('๐ Memulai audit dependencies...');
const result = await depcheck(process.cwd(), {});
const unused = [...result.dependencies, ...result.devDependencies];
if (unused.length === 0) {
console.log('โ
Bersih! Tidak ada paket yang perlu dihapus.');
} else {
console.log('๐งน Menghapus paket tak terpakai:', unused.join(', '));
execSync(`npm uninstall ${unused.join(' ')}`, { stdio: 'inherit' });
}
console.log('๐๏ธ Membersihkan node_modules & lockfile...');
fs.rmSync('node_modules', { recursive: true, force: true });
fs.rmSync('package-lock.json', { force: true });
console.log('๐ฆ Menjalankan instalasi ulang yang bersih...');
execSync('npm install', { stdio: 'inherit' });
console.log('โจ Selesai! Repo kamu sekarang lebih ramping.');
})(); โ๏ธ Jadwalkan di GitHub Actions
Ngapain jalanin manual kalau bisa disuruh tiap minggu? Pakai file YAML ini di .github/workflows/cleanup.yml.
name: Weekly Dependency Cleanup
on:
schedule:
- cron: '0 21 * * 0' # Setiap Minggu Malam (WIB menyesuaikan)
workflow_dispatch:
jobs:
automation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install Tools
run: npm ci
- name: Eksekusi Skrip Pembersihan
run: node ext/cleanup-auto.js ๐ก Tips:
Pastikan kamu sudah install depcheck di proyek kamu sebelum menjalankan skrip ini (npm install depcheck --save-dev). Gunakan workflow ini di branch development dulu buat mastiin tidak ada paket "ajaib" yang hilang tapi ternyata dibutuhin di produksi!