npm (Node Package Manager) — manajer paket standar untuk platform Node.js, termasuk dalam paket instalasi Node.js. npm mengelola dependensi proyek JavaScript dan TypeScript: menginstal pustaka di node_modules, memperbarui versi paket, menyelesaikan konflik versi. package.json — file konfigurasi pusat dengan metadata dan daftar dependensi. npm Registry — repositori paket terbesar. Selengkapnya di npm Registry.
Poin Utama
npm dibuat pada tahun 2010 oleh Isaac Schlueter sebagai solusi untuk mengelola dependensi Node.js. Sejak 2014 npm dikelola oleh perusahaan npm, Inc., yang diakuisisi oleh Microsoft/GitHub pada 2020. Alat ini terdiri dari dua bagian: CLI (baris perintah) untuk menginstal dan mengelola paket, dan Registry — repositori pusat dari semua modul yang dipublikasikan di registry.npmjs.org.
npm Registry — repositori paket terbesar: lebih dari 2 juta paket dan lebih dari 10 miliar unduhan setiap bulan. Setiap paket memiliki versi SemVer, deskripsi, dependensi, lisensi, dan kepenulisan. Publikasi paket sendiri dilakukan melalui npm publish. npm mendukung paket scoped untuk organisasi (@scope/package), repositori privat, dan audit keamanan bawaan.
Node.js versi 18+ menyertakan npm 9+ dengan kinerja yang ditingkatkan, workspaces untuk monorepo, dan mekanisme peer dependencies yang dirancang ulang. Ekosistem npm mencakup JavaScript sisi server, frontend (React, Vue, Angular), pengembangan seluler (React Native), alat build (Webpack, Vite), dan utilitas CLI. npm adalah saluran distribusi utama untuk pustaka JavaScript.
npm install — perintah utama yang membaca package.json dan package-lock.json untuk menginstal semua dependensi di node_modules. Pada saat pertama dijalankan, npm menghitung grafik dependensi, menyelesaikan konflik versi, dan menghasilkan package-lock.json. Perintah npm install <package> menginstal paket tertentu; flag --save-dev menambahkan ke devDependencies, --global — secara global.
npx — pelaksana paket, disertakan dalam npm sejak versi 5.2. npx memungkinkan menjalankan utilitas CLI tanpa instalasi global: npx react-native init atau npx create-react-app my-app. npx mengunduh paket ke cache sementara, menjalankannya, dan membersihkannya setelah selesai. npx juga berguna untuk menjalankan versi tertentu dari alat.
npm audit memindai pohon dependensi untuk kerentanan yang diketahui dari basis data npm. Perintah menampilkan laporan dengan tingkat keparahan (critical, high, moderate) dan merekomendasikan npm audit fix untuk pembaruan otomatis paket yang rentan. npm cache menyimpan paket yang diunduh secara lokal. npm cache clean --force membersihkan cache saat ada masalah instalasi. npm outdated menunjukkan paket yang usang.
# Perintah utama npm
$ npm install
$ npm install react-native-webview --save
$ npm install typescript --save-dev
# Menjalankan tanpa instalasi global
$ npx react-native init MyApp
# Audit keamanan
$ npm audit --fix
package.json — adalah file JSON di root proyek yang mendeskripsikan metadata, dependensi, dan konfigurasinya. Bidang wajib: name (nama unik paket) dan version (versi SemVer, misalnya 1.0.0). File dibuat dengan perintah npm init -y untuk inisialisasi cepat atau secara manual.
Semantic Versioning (SemVer) — standar versi MAJOR.MINOR.PATCH. Versi utama berubah saat perubahan API yang tidak kompatibel, versi minor — saat penambahan fungsionalitas (kompatibel mundur), patch — saat perbaikan bug. Simbol ^ sebelum versi mengizinkan pembaruan versi minor dan patch, ~ — hanya patch.
{
"name": "my-app",
"version": "1.0.0",
"private": true,
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios"
},
"dependencies": {
"react": "^18.3.0",
"react-native": "^0.76.0"
},
"devDependencies": {
"typescript": "^5.5.0",
"@types/react": "^18.3.0"
}
}
| Bidang | Tujuan | Contoh Nilai |
|---|---|---|
| scripts | Perintah untuk dijalankan dengan npm run | "start": "node index.js" |
| dependencies | Dependensi produksi aplikasi | "react": "^18.3.0" |
| devDependencies | Alat pengembangan dan pengujian | "jest": "^29.7.0" |
| peerDependencies | Dependensi host untuk pustaka | "react": ">=17.0.0" |
| engines | Persyaratan versi Node.js | {"node": ">=18.0.0"} |
React Native proyek aktif menggunakan npm untuk mengelola dependensi. Paket standar mencakup react, react-native, pustaka navigasi (React Navigation), permintaan HTTP (axios), manajemen state (Redux, Zustand), dan komponen UI. npm memungkinkan instalasi ribuan paket yang kompatibel dari repositori.
npx pod-install — perintah wajib setelah menginstal modul native di React Native untuk iOS. npm secara otomatis menghasilkan Podfile.lock berdasarkan package-lock.json. Di proyek Expo, expo install digunakan sebagai pengganti npm install, karena memilih versi yang kompatibel dengan versi Expo SDK saat ini.
Konflik versi — masalah umum di React Native: react-native-reanimated, react-native-gesture-handler, dan react-native-safe-area-context memerlukan versi yang selaras. Solusi — perbarui semua paket ke versi kompatibel terbaru atau gunakan --legacy-peer-deps. package-lock.json sangat penting untuk modul native yang dikompilasi melalui CocoaPods dan Gradle.
npm — manajer paket standar, termasuk dalam Node.js. Alternatif utama: yarn (dibuat oleh Facebook pada 2016) dan pnpm (cepat, dengan tautan keras). Mulai npm 5, perbedaan kecepatan dan fungsionalitas antara npm dan yarn minimal. npm 7+ menambahkan workspaces, membuatnya kompetitif untuk monorepo.
| Karakteristik | npm | yarn | pnpm |
|---|---|---|---|
| Tahun pembuatan | 2010 | 2016 | 2017 |
| File lock | package-lock.json | yarn.lock | pnpm-lock.yaml |
| Instalasi | Berurutan (npm 5+) | Paralel | Paralel |
| Ruang disk | Standar | Standar | Minimal (tautan) |
| Workspaces | Ya (npm 7+) | Ya | Ya |
| Plug'n'Play | Tidak | Ya | Tidak |
Menurut State of JS 2025: npm digunakan oleh 62% pengembang, yarn — 35% (terutama proyek lama dan penggemar PnP), pnpm — 3%. Untuk proyek React Native, kedua alat setara, tetapi npm lebih sering ditemukan di proyek Expo SDK 50+ dan inisialisasi React Native baru.
yarn mempertahankan keunggulan di monorepo yang sangat besar (100+ paket) berkat implementasi workspaces dan Plug'n'Play yang lebih matang. pnpm unggul dalam penghematan ruang disk melalui tautan keras ke penyimpanan global. Pemilihan manajer tergantung pada preferensi tim dan infrastruktur.
Pertanyaan yang Sering Diajukan
npm install memperbarui package-lock.json dan dapat menginstal versi minor baru dalam rentang semantik. npm ci (Clean Install) menghapus node_modules dan menginstal paket secara ketat sesuai package-lock.json tanpa memperbaruinya. npm ci lebih cepat, digunakan di CI/CD dan menjamin lingkungan yang identik di semua mesin. Jika package-lock.json tidak ada, npm ci mengembalikan error.
Mulai npm 7, konflik peer dependencies menyebabkan error build. Solusi: perbarui semua paket ke versi kompatibel melalui npm update, gunakan flag --legacy-peer-deps untuk mode npm 6, atau tambahkan bagian overrides di package.json untuk memaksa fiksasi versi paket tertentu. Opsi terbaik — perbarui dependensi ke versi kompatibel.
npm audit memindai pohon dependensi untuk kerentanan yang diketahui dari basis data npm Security Advisory. Perintah menampilkan laporan dengan tingkat keparahan (critical, high, moderate, low) dan merekomendasikan npm audit fix untuk pembaruan otomatis paket yang rentan ke versi aman. Menjalankan npm audit secara teratur — praktik keamanan dasar dalam proyek JavaScript.
npm workspaces memungkinkan pengelolaan beberapa paket dalam satu repositori. Tambahkan bidang "workspaces": ["packages/*"] di package.json root. Keuntungan: instalasi tunggal semua dependensi di node_modules bersama, symlink otomatis antar paket lokal, menjalankan skrip untuk semua paket dari root, menghilangkan duplikasi versi.
package-lock.json menetapkan versi tepat dari semua dependensi dan paket transitifnya. Tanpa itu, pengembang dan server CI yang berbeda dapat memperoleh versi pustaka yang berbeda dalam rentang semantik, yang menyebabkan error "berfungsi di mesin saya". Melakukan commit file lock menjamin build yang dapat direproduksi dan perilaku identik di semua lingkungan.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga