Screenshot menunjukkan folder .npm-cache/_cacache dalam file explorer

Lho, Kok Ada Folder .npm-cache/_cacache di Repo?

Oleh: FrijalNPM, Git, CI/CDDipublikasikan: 25 Okt 2025

Pernah tidak sih, pas lagi kerja pakai Node.js, tiba-tiba muncul folder aneh bernama .npm-cache di root project kamu? Apalagi kalau pakai GitHub Actions, folder ini suka ikut ke-commit kalau tidak hati-hati. Tenang, ini bukan error kok. Yuk kita bahas kenapa bisa muncul dan gimana cara ngatasinnya!

Penyebab Utama

Folder .npm-cache/_cacache itu muncul karena npm secara default membuat cache lokal setiap kali kamu menjalankan npm install (atau perintah npm lain yang butuh download paket).

  • Default npm cache: Biasanya, pas kamu npm install di laptop/komputer lokal, npm menyimpan paket yang diunduh ke folder cache global di sistem kamu (misalnya di ~/.npm di Linux/Mac atau %AppData%/npm-cache di Windows). Ini biar kalau kamu install paket yang sama di project lain, tidak perlu download ulang dari internet. Hemat waktu dan kuota!
  • Kenapa muncul di repo? Nah, masalahnya muncul kalau:
    • Di Runner GitHub Actions: Kalau workflow kamu menjalankan npm install tanpa mengatur lokasi cache khusus untuk Actions, npm bisa jadi membuat folder .npm-cache di dalam direktori kerja (yaitu di dalam repo yang di-checkout). Si runner kan tidak punya cache global permanen kayak laptop kita.
    • Perintah Khusus atau Konfigurasi: Kadang (walau jarang), ada script build, konfigurasi environment variable (NPM_CONFIG_CACHE), atau file .npmrc di project kamu yang secara eksplisit mengarahkan lokasi cache npm ke folder .npm-cache di root repo. Akibatnya, cache jadi tersimpan di situ deh.
  • Ikut Ter-commit: Karena folder ini dibuat di dalam direktori kerja repo kamu, kalau tidak ada aturan di file .gitignore untuk mengabaikannya, ya otomatis Git akan menganggapnya sebagai file baru atau perubahan yang perlu di-commit. Jadilah dia nongol di Pull Request atau commit history.
Isi folder _cacache itu sebenarnya cuma data temporary hasil download paket. tidak ada gunanya ikut disimpan ke Git repo kamu. Malah bikin repo jadi gendut dan proses clone/checkout jadi lama.

Solusi Biar Gak Muncul Lagi

Untungnya, solusinya gampang banget. Ada beberapa cara:

1. Abaikan Folder Cache di Git

Ini cara paling dasar dan wajib dilakukan. Tambahkan baris berikut ke file .gitignore di root project kamu:

# NPM cache
.npm-cache/
npm-debug.log*
yarn-debug.log*
yarn-error.log*

Dengan ini, Git akan cuek bebek sama folder .npm-cache dan isinya. Dia tidak akan muncul lagi di status Git atau ikut ter-commit.

2. Gunakan Cache Bawaan GitHub Actions

Kalau masalahnya muncul spesifik di workflow GitHub Actions, cara terbaik adalah pakai fitur cache bawaan dari action actions/setup-node. Ini lebih efisien karena cache-nya disimpan di infrastruktur GitHub, bukan di dalam repo kita.

Caranya gampang, cukup tambahkan opsi cache: 'npm' di step setup Node:

- name: Setup Node.js
 uses: actions/setup-node@v4
 with:
 node-version: 20
 cache: 'npm' # <-- Tambahkan ini!

Dengan begini, actions/setup-node akan otomatis mengurus caching node_modules dan cache npm global di runner. Folder .npm-cache kemungkinan besar tidak akan dibuat lagi di direktori kerja repo kamu.

3. Atur Lokasi Cache Secara Eksplisit (Kalau Perlu)

Kalau kamu punya alasan khusus untuk tetap pakai cache manual (misalnya di environment build yang lain, bukan Actions), kamu bisa paksa npm untuk menyimpan cache-nya di lokasi lain di luar repo. Misalnya, arahkan ke folder home runner (yang biasanya aman):

# Set lokasi cache npm ke ~/.npm secara global di runner
npm config set cache ~/.npm --global
# Baru jalankan install
npm install

Perintah ini memberitahu npm, "Hei, simpan cache-nya di folder .npm di home direktori ya, jangan di tempat lain!"

Jadi Singkatnya...

Folder .npm-cache/_cacache itu muncul karena npm menyimpan cache hasil download paket di dalam repo kamu (seringnya karena setup di CI/CD seperti GitHub Actions). Folder ini tidak penting dan tidak perlu ikut masuk ke repo Git.

Solusi paling gampang dan direkomendasikan:

  1. Tambahkan .npm-cache/ ke .gitignore kamu. (Wajib!)
  2. Kalau pakai GitHub Actions, gunakan cache: 'npm' di actions/setup-node.

Dengan begitu, repo kamu tetap bersih dan workflow CI/CD kamu bisa lebih cepat karena memanfaatkan cache yang benar. 👍