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

๐Ÿช„ 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

โœ… 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.

Twitter Facebook LinkedIn
×