Workflow Active

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