Soal 1Ketika kamu mengetik npm install react di folder my-app, ke mana package yang diambil itu masuk?
Apa Itu Manajemen Package — Apa yang Dipasang npm install dan Di Mana
Artikel ini adalah bagian dari kursus Dasar-Dasar Teknologi Informasi, yang membangun dari nol pengetahuan TI praktis yang minimal kamu butuhkan untuk memprogram dan melakukan vibe coding.
Ketika kamu mengetik npm install react, folder node_modules muncul di my-app dan satu baris bertambah di package.json. Diagramnya mengikuti apa yang dipicu oleh satu baris itu.
Artikel ini membahas manajemen package.
Ini adalah mekanisme yang mengambil library eksternal lewat nama dengan satu baris seperti npm install, lalu menaruhnya di tempat yang sudah ditentukan.
Kamu hanya mengetik satu baris di sebelah kiri, dan dua hal di sebelah kanan itulah yang bertambah.
Yang bertambah hanyalah folder node_modules dan satu baris di package.json, sedangkan app.js yang kamu tulis sendiri tidak berubah satu karakter pun.
Apa itu package — library eksternal yang kamu ambil lewat nama
Library eksternal yang dikemas agar bisa diambil lewat nama disebut package, dan nomor yang menandai isinya pada saat itu disebut versi.
Ketika kamu ingin menampilkan tanggal dengan rapi di aplikasi reservasi my-app, proses yang sama bisa kamu tulis sendiri, tetapi juga sudah dibagikan sebagai package.
Di sebelah kiri, semua baris yang kamu tulis menjadi milikmu; di sebelah kanan, kamu hanya memanggil yang sudah kamu ambil dengan satu baris.
- String yang kamu sebut saat mengambil
- Menunjuk tepat satu hal di situs distribusi
- Nomor baru ditambahkan setiap kali ada revisi
- Nomor yang lama tetap tersedia
- Program itu sendiri, yang berjalan saat dipanggil
- Kamu tidak mengubahnya sendiri
- Yang membuat react tidak bisa jalan sendirian terdaftar di sini
- Semuanya ikut ketika kamu mengambilnya
Yang kamu sebut saat mengambil hanyalah nama di bagian paling atas.
"Nama package lain yang dibutuhkannya" di bagian paling bawah itulah yang nanti menambah jumlah folder.
Package adalah library eksternal yang bisa kamu ambil lewat nama
Package adalah program yang ditulis orang lain, diberi nama, dan dikemas agar bisa dibagikan.
Dengan menyebut namanya, isinya bisa kamu bawa ke komputer kamu, dan versi adalah nomor yang membedakan revisi di dalam nama yang sama.
Apa yang muncul di dalam my-app ketika kamu mengetik npm install react
Yang mengambilnya lewat nama adalah package manager (program yang mengambil package dan menaruhnya di tempat yang sudah ditentukan), dan untuk JavaScript namanya npm.
Keduanya cukup satu baris di terminal, dan keduanya mengandaikan kamu mengetik di dalam my-app.
# Pindah dulu ke folder my-app, baru ketik
cd my-app
# Ambil satu package bernama react
npm install react
# Ambil sekaligus semua nama yang terdaftar di file daftar
npm install
Package yang sudah diambil masuk ke node_modules (folder yang dibuat npm di dalam my-app untuk menampung package yang diambil).
- app.js — source code untuk proses reservasi
- package.json — file berisi daftar nama yang diambil
- Source code package yang diambil
- Inilah yang kamu panggil
- Satu folder dibuat untuk setiap nama
- Kalau tidak membutuhkan apa pun, bagian ini tidak bertambah
File yang kamu tulis dan folder yang dibuat npm berada terpisah di dalam my-app yang sama.
Meski barisnya sama, hasilnya berubah tergantung cara kamu mengetik dan salah tidaknya nama itu.
| Baris yang kamu ketik | Yang dilakukan npm | Hasil di dalam my-app |
|---|---|---|
| npm install react | Mengambil nama itu dan dependensinya | Folder bertambah di node_modules |
| npm install | Mengambil sekaligus semua nama di package.json | node_modules terbentuk seluruhnya |
| npm install reactttt | Mencarinya dan tidak menemukannya | 404 Not Found, tidak ada yang bertambah |
Seperti pada baris ketiga, kalau nama yang salah ketik tidak ada di situs distribusi, tidak ada yang terpasang.
Kalau nama yang salah ketik itu kebetulan ada, yang terpasang justru hal lain, jadi salin nama dari halaman resminya.
Package yang dibutuhkan react, dan package yang dibutuhkan oleh package itu lagi, semuanya ikut datang.
Tidak perlu mencari sendiri seluruh rangkaian itu lalu mengambilnya satu per satu, dan itulah alasan memakai package manager.
Mengambil satu package tidak berarti hanya satu folder yang terbentuk di node_modules.
Situs distribusi adalah komputer lain di seberang internet.
Satu-satunya tempat package yang diambil ditaruh adalah node_modules di dalam folder my-app.
app.js yang kamu tulis memanggil package di dalamnya lalu memakainya.
Yang kamu ambil masuk ke node_modules
Yang kamu ambil masuk ke folder node_modules yang terbentuk di dalam my-app.
app.js yang kamu tulis sendiri tidak berubah, dan foldernya lebih banyak daripada jumlah yang kamu sebut karena package yang dibutuhkan oleh package yang kamu ambil ikut datang juga.
package.json — file daftar berisi nama package yang kamu ambil
Isi node_modules dibuat oleh npm, dan kamu tidak mengubahnya sendiri.
Yang kamu kelola hanyalah satu file yang memuat daftar nama yang kamu ambil.
Itulah file daftar (package.json di JavaScript, file yang mencatat nama package yang dibutuhkan aplikasi itu agar bisa berjalan), dan setiap nama yang terdaftar di sana disebut dependensi (dependency, package yang dibutuhkan kode milikmu agar bisa berjalan).
{
"name": "my-app",
"dependencies": {
"react": "^19.0.0",
"express": "^5.1.0"
}
}
Dua entri yang terdaftar di bawah dependencies adalah dependensi my-app ini.
Bagian kanan menentukan versi yang diambil, angkanya hanya untuk contoh ini, dan pada praktiknya yang masuk adalah versi saat kamu mengambilnya.
Tanda ^ di depan berarti "versi yang lebih baru dan kompatibel dengan nomor yang tertulis juga diizinkan".
Selain dependensi, package.json juga mencatat hal lain.
- Nama aplikasi itu sendiri
- Isinya my-app
- Memuat nama package yang dibutuhkan agar bisa berjalan
- npm install membaca bagian ini
- Mengambil react menambah satu baris
- Tempat memberi nama pendek untuk perintah yang sering kamu ketik
- Dipanggil seperti npm run start
Yang dibaca npm install adalah bagian dependencies di tengah.
Satu hal yang sama bisa punya tiga sebutan, tergantung dari mana kamu melihatnya.
Karena ada file daftar, kamu tidak perlu menyerahkan node_modules kepada siapa pun.
| Yang kamu serahkan ke komputer lain | Ketika dia mengetik npm install | Apakah my-app berjalan? |
|---|---|---|
| app.js dan package.json | Mengambil semua nama di daftar | Semuanya lengkap dan berjalan |
| Hanya app.js | Nama yang harus diambil tidak diketahui | Pemanggilannya menimbulkan error |
| app.js dan node_modules | Isinya sudah ada tanpa mengetiknya | Berjalan, tetapi kamu menyerahkan ratusan folder |
Yang kamu serahkan adalah app.js dan package.json, dan orang itu cukup mengetik npm install satu kali.
npm hanya membaca dependencies di package.json, mengambil nama yang terdaftar di sana dari situs distribusi, lalu membangun ulang node_modules.
Tidak perlu menyerahkan node_modules itu sendiri.
Dengan daftar nama saja, isinya bisa dibangun ulang
package.json adalah file yang memuat nama package yang dibutuhkan my-app ini agar bisa berjalan.
npm install membaca file ini lalu mengambil semua namanya sekaligus, jadi node_modules bisa dibangun ulang kapan saja dan tidak pernah perlu diserahkan kepada siapa pun.
Sama saja di Python — pip, requirements.txt, dan virtual environment yang memisahkan tempat package disimpan
Sejauh ini kita melihatnya dengan nama-nama JavaScript.
Di Python namanya berbeda, tetapi yang dilakukan sama saja.
Yang mengambil adalah pip, dan file daftar yang memuat namanya adalah requirements.txt.
Karena perannya sama, memahami yang satu membuatmu bisa membaca yang lain dengan cara yang sama.
Satu hal yang berbeda adalah tempat penyimpanannya: tanpa virtual environment, pip memasangnya ke seluruh komputer.
Untuk menghindarinya kamu membuat virtual environment (mekanisme yang membuat sebuah folder khusus untuk menampung package milik aplikasi itu saja).
- node_modules — dependensi masuk ke sini
- Tidak terlihat dari aplikasi lain
- Punya node_modules sendiri
- Versi berbeda dengan nama yang sama tidak bertabrakan
- site-packages hanya ada satu untuk seluruh komputer
- Kalau aplikasi lain meminta versi berbeda, keduanya bertabrakan
Kalau foldernya terpisah per aplikasi, versi berbeda dengan nama yang sama bisa berdampingan tanpa bertabrakan.
Panduan pemasangan menyuruhmu membuat virtual environment lebih dulu supaya pemisahan itu terbentuk.
Meski bahasanya berbeda, ketiga perannya sama
Setiap bahasa punya program yang mengambil, file daftar yang memuat nama, dan tempat menyimpan apa yang tiba.
Di JavaScript itu adalah npm, package.json, dan node_modules; di Python itu pip dan requirements.txt, dan hanya di Python package-nya masuk ke seluruh komputer kalau kamu tidak membuat virtual environment.
Cek Pemahaman
Jawab setiap pertanyaan satu per satu.
Soal 2Ketika menjalankan my-app yang sama di komputer lain, mengapa kamu tidak perlu menyerahkan node_modules?
Soal 3Mengapa mengambil satu package saja bisa membuat lebih dari satu folder di node_modules?