๐งน Pembersihan Otomatis Dependencies (Non-Interaktif)
Kadang kita ingin proyek Node.js di GitHub Pages tetap bersih tanpa perlu konfirmasi manual saat melakukan pembersihan dependencies yang tidak terpakai. Di sinilah mode otomatis berguna: skrip berjalan sepenuhnya tanpa prompt dan cocok diintegrasikan ke workflow GitHub Actions.
๐ฏ Tujuan
Dengan skrip cleanup-auto.js, kita bisa:
- Memeriksa dependencies yang tidak digunakan.
- Menghapusnya secara otomatis tanpa input pengguna.
- Menghapus folder
node_modules
danpackage-lock.json
bila perlu. - Menjalankan instalasi ulang bersih (
npm install
).
๐ช Petunjuk Penggunaan
Simpan skrip berikut di ext/cleanup-auto.js
:
#!/usr/bin/env node
/**
* ===================================================================
* CLEANUP AUTO v1.0
* Hapus paket tidak terpakai dan reinstall otomatis (non-interaktif)
* Cocok untuk workflow GitHub Actions
* ===================================================================
*/
import { execSync } from 'node:child_process';
import depcheck from 'depcheck';
import fs from 'node:fs';
(async () => {
console.log('๐ Memeriksa paket tidak terpakai...');
const result = await depcheck(process.cwd());
const unused = [...result.dependencies, ...result.devDependencies];
if (unused.length === 0) {
console.log('โ
Tidak ada paket yang perlu dihapus.');
} else {
console.log('๐งน Menghapus paket:', unused.join(', '));
execSync(`npm uninstall ${unused.join(' ')}`, { stdio: 'inherit' });
}
console.log('๐๏ธ Menghapus node_modules dan package-lock.json...');
fs.rmSync('node_modules', { recursive: true, force: true });
fs.rmSync('package-lock.json', { force: true });
console.log('๐ฆ Instal ulang paket...');
execSync('npm install', { stdio: 'inherit' });
console.log('โจ Cleanup selesai tanpa prompt!');
})();
โ๏ธ Integrasi ke Workflow GitHub Actions
Kita bisa menjadwalkan proses pembersihan otomatis ini langsung dari workflow YAML agar dijalankan misalnya setiap minggu.
name: Auto Cleanup Dependencies
on:
schedule:
- cron: '0 21 * * 0' # Setiap Minggu jam 21:00 UTC
workflow_dispatch:
jobs:
cleanup:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Dependencies
run: npm ci
- name: Jalankan Cleanup Otomatis
run: node ext/cleanup-auto.js
๐ก Tips Tambahan
- Gunakan mode ini hanya di branch utama atau staging, agar tidak menghapus paket penting di branch pengembangan.
- Bisa dikombinasikan dengan workflow build agar repo tetap ramping.
- Tambahkan log hasil cleanup ke artifact untuk audit.
โ Kesimpulan
Skrip cleanup-auto.js
membantu menjaga proyek tetap ringan, bebas sisa dependensi, dan sepenuhnya otomatis tanpa konfirmasi manual.
Cocok dijalankan pada server CI/CD seperti GitHub Actions, terutama untuk proyek statis seperti GitHub Pages.