npm: temeller, React Native ve Node.js için paket yöneticisi

Yazar: IT Sectr Yayınlanma: 2026-02-13 Okuma süresi: 10 dk

npm (Node Package Manager), Node.js platformu için standart paket yöneticisidir ve Node.js kurulumuna dahildir. npm, JavaScript ve TypeScript projelerinin bağımlılıklarını yönetir: kitaplıkları node_modules'a yükler, paket sürümlerini günceller, sürüm çakışmalarını çözer. package.json, meta veriler ve bağımlılık listesi içeren merkezi yapılandırma dosyasıdır. npm Registry, en büyük paket kaydıdır. Daha fazla bilgi için npm Registry'yi ziyaret edin.

Önemli Noktalar

  • npm — Node.js'nin standart paket yöneticisi, 0.6.3 sürümünden itibaren Node.js ile birlikte gelir
  • package.json — bağımlılıklar, betikler ve meta veriler içeren proje yapılandırma dosyası
  • npm install — package.json'dan node_modules klasörüne bağımlılıkları yükleyen temel komut
  • package-lock.json — tüm ortamlarda tekrarlanabilir yüklemeler için tam sürüm kilit dosyası
  • npm ci — kilit dosyasını güncellemeden ona sıkı sıkıya bağlı kalarak paketleri yükleyen CI/CD komutu

npm nedir — Node.js paket yöneticisi?

npm, 2010 yılında Isaac Schlueter tarafından Node.js bağımlılık yönetimi için bir çözüm olarak oluşturuldu. 2014'ten beri npm, npm, Inc. tarafından yönetilmektedir ve 2020'de Microsoft/GitHub tarafından satın alınmıştır. Araç iki bölümden oluşur: paketleri yüklemek ve yönetmek için CLI (komut satırı) ve registry.npmjs.org adresindeki tüm yayınlanmış modüllerin merkezi deposu olan Registry.

npm Registry en büyük paket kaydıdır: 2 milyondan fazla paket ve aylık 10 milyardan fazla indirme. Her paketin bir SemVer sürümü, açıklaması, bağımlılıkları, lisansı ve yazarlığı vardır. Kendi paketinizi yayınlamak npm publish ile yapılır. npm, kuruluşlar için kapsamlı paketleri (@scope/package), özel kayıtları ve yerleşik güvenlik denetimini destekler.

Node.js sürüm 18+, gelişmiş performansa sahip npm 9+, monorepo'lar için çalışma alanları ve yeniden tasarlanmış eş bağımlılık mekanizması içerir. npm ekosistemi, sunucu taraflı JavaScript, ön yüz (React, Vue, Angular), mobil geliştirme (React Native), derleme araçları (Webpack, Vite) ve CLI yardımcı programlarını kapsar. npm, JavaScript kitaplıklarının birincil dağıtım kanalıdır.

npm'in Temel Özellikleri

npm install — tüm bağımlılıkları node_modules'a yüklemek için package.json ve package-lock.json'ı okuyan ana komuttur. İlk çalıştırmada npm, bağımlılık grafiğini hesaplar, sürüm çakışmalarını çözer ve package-lock.json'ı oluşturur. npm install <package> komutu belirli bir paketi yükler; --save-dev bayrağı onu devDependencies'e ekler, --global ise genel olarak yükler.

npx — npm sürüm 5.2'den itibaren dahil edilen bir paket çalıştırıcısıdır. npx, genel kurulum olmadan CLI yardımcı programlarını çalıştırmaya olanak tanır: npx react-native init veya npx create-react-app my-app. npx, paketi geçici bir önbelleğe indirir, çalıştırır ve tamamlandıktan sonra temizler. npx ayrıca belirli araç sürümlerini çalıştırmak için de kullanışlıdır.

npm audit, npm veritabanındaki bilinen güvenlik açıkları için bağımlılık ağacını tarar. Komut, önem düzeylerine (critical, high, moderate) sahip bir rapor çıkarır ve güvenlik açığı bulunan paketleri otomatik olarak güncellemek için npm audit fix önerir. npm cache, indirilen paketleri yerel olarak depolar. npm cache clean --force, kurulum sorunlarında önbelleği temizler. npm outdated, güncel olmayan paketleri gösterir.

bash
# Temel npm komutları
$ npm install
$ npm install react-native-webview --save
$ npm install typescript --save-dev
# Genel kurulum olmadan çalıştırma
$ npx react-native init MyApp
# Güvenlik denetimi
$ npm audit --fix

package.json Yapısı ve Bağımlılık Yönetimi

package.json, proje kökünde meta verilerini, bağımlılıklarını ve yapılandırmasını açıklayan bir JSON dosyasıdır. Zorunlu alanlar: name (benzersiz paket adı) ve version (SemVer sürümü, örn. 1.0.0). Dosya, hızlı başlatma için npm init -y ile veya manuel olarak oluşturulur.

Semantic Versioning (SemVer), MAJOR.MINOR.PATCH biçiminde bir sürümleme standardıdır. Ana sürüm, uyumsuz API değişikliklerinde değişir, alt sürüm — işlevsellik eklerken (geriye dönük uyumlu), yama — hata düzeltmelerinde. Sürümden önceki ^ sembolü, alt sürüm ve yama güncellemelerine izin verir, ~ ise yalnızca yama güncellemelerine izin verir.

json
{
  "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"
  }
}
AlanAmaçÖrnek Değer
scriptsnpm run için çalıştırma komutları"start": "node index.js"
dependenciesUygulamanın üretim bağımlılıkları"react": "^18.3.0"
devDependenciesGeliştirme ve test araçları"jest": "^29.7.0"
peerDependenciesKitaplıklar için ana bilgisayar bağımlılıkları"react": ">=17.0.0"
enginesNode.js sürüm gereksinimleri{"node": ">=18.0.0"}

React Native Geliştirmede npm

React Native projeleri, bağımlılık yönetimi için npm'i aktif olarak kullanır. Standart set, react, react-native, gezinme kitaplıkları (React Navigation), HTTP kitaplıkları (axios), durum yönetimi (Redux, Zustand) ve UI bileşenlerini içerir. npm, kayıttan binlerce uyumlu paket yüklemeye olanak tanır.

npx pod-install — iOS için React Native'de yerel modüller yüklendikten sonra gerekli bir komuttur. npm, package-lock.json'a dayalı olarak otomatik olarak bir Podfile.lock oluşturur. Expo projelerinde npm install yerine expo install kullanılır çünkü mevcut Expo SDK sürümüyle uyumlu sürümleri seçer.

Sürüm çakışmaları React Native'de yaygın bir sorundur: react-native-reanimated, react-native-gesture-handler ve react-native-safe-area-context uyumlu sürümler gerektirir. Çözüm, tüm paketleri en son uyumlu sürümlere güncellemek veya --legacy-peer-deps kullanmaktır. package-lock.json, CocoaPods ve Gradle aracılığıyla derlenen yerel modüller için kritiktir.

npm'in Alternatif Yöneticilerle Karşılaştırılması

npm, Node.js ile birlikte gelen standart paket yöneticisidir. Ana alternatifler: yarn (2016'da Facebook tarafından oluşturuldu) ve pnpm (hızlı, sabit bağlantılarla). npm 5'ten bu yana, npm ve yarn arasındaki hız ve işlevsellik farkı minimumdur. npm 7+, çalışma alanları ekleyerek onu monorepo'lar için rekabetçi hale getirdi.

Özelliknpmyarnpnpm
Oluşturulma yılı201020162017
Kilit dosyasıpackage-lock.jsonyarn.lockpnpm-lock.yaml
KurulumSıralı (npm 5+)ParalelParalel
Disk alanıStandartStandartMinimum (bağlantılar)
Çalışma alanlarıEvet (npm 7+)EvetEvet
Plug'n'PlayHayırEvetHayır

State of JS 2025'e göre: Geliştiricilerin %62'si npm kullanıyor, %35'i yarn (çoğunlukla eski projeler ve PnP meraklıları) ve %3'ü pnpm kullanıyor. React Native projeleri için her iki araç da eşit derecede uygundur, ancak npm, Expo SDK 50+ ve yeni React Native başlatmalarını kullanan projelerde daha yaygındır.

yarn, daha olgun çalışma alanı uygulaması ve Plug'n'Play sayesinde son derece büyük monorepo'larda (100+ paket) avantajını korur. pnpm, genel bir depoya sabit bağlantılar yoluyla disk alanı tasarrufunda kazanır. Yönetici seçimi, ekip tercihlerine ve altyapıya bağlıdır.

Sıkça Sorulan Sorular

npm install ve npm ci arasındaki fark nedir?

npm install, package-lock.json'ı günceller ve anlamsal aralık içinde yeni alt sürümler yükleyebilir. npm ci (Clean Install), node_modules'u kaldırır ve package-lock.json'dan paketleri onu güncellemeden sıkı bir şekilde yükler. npm ci daha hızlıdır, CI/CD'de kullanılır ve tüm makinelerde aynı ortamı garanti eder. package-lock.json eksikse, npm ci hata verir.

npm'de eş bağımlılık çakışmaları nasıl düzeltilir?

npm 7'den itibaren, eş bağımlılık çakışmaları derleme hatalarına neden olur. Çözümler: npm update ile tüm paketleri uyumlu sürümlere güncellemek, npm 6 modu için --legacy-peer-deps bayrağını kullanmak veya belirli bir paketin sürümünü zorlamak için package.json'a overrides bölümü eklemek. En iyi seçenek, bağımlılıkları uyumlu sürümlere güncellemektir.

npm audit nedir ve neden gereklidir?

npm audit, npm Security Advisory veritabanındaki bilinen güvenlik açıkları için bağımlılık ağacını tarar. Komut, önem düzeyi (critical, high, moderate, low) ile bir rapor çıkarır ve güvenlik açığı bulunan paketleri güvenli sürümlere otomatik olarak güncellemek için npm audit fix önerir. Düzenli olarak npm audit çalıştırmak, JavaScript projeleri için temel bir güvenlik uygulamasıdır.

npm çalışma alanları monorepo'ları nasıl basitleştirir?

npm çalışma alanları, tek bir depoda birden çok paketi yönetmeye olanak tanır. Kök package.json'a "workspaces": ["packages/*"] alanını ekleyin. Avantajlar: paylaşılan bir node_modules'a tüm bağımlılıkların tek kurulumu, yerel paketler arasında otomatik sembolik bağlantılar, kökten tüm paketler için betik çalıştırma ve sürüm tekrarını ortadan kaldırma.

package-lock.json neden depoya kaydedilmeli?

package-lock.json, tüm bağımlılıkların ve bunların geçişli paketlerinin tam sürümlerini kilitler. Bu olmadan, farklı geliştiriciler ve CI sunucuları, anlamsal aralık içinde farklı kitaplık sürümleri alabilir ve bu da «benim makinemde çalışıyor» hatalarına yol açar. Kilit dosyasını kaydetmek, tekrarlanabilir derlemeleri ve tüm ortamlarda aynı davranışı garanti eder.

Özet

  • npm — Node.js'nin standart paket yöneticisi, 0.6.3 sürümünden itibaren Node.js ile birlikte gelir
  • package.json — bağımlılıklar, betikler ve meta veriler içeren proje yapılandırma dosyası
  • npm install — bağımlılıkları yükler, npm ci — CI/CD için package-lock.json'dan sıkı şekilde yükler
  • package-lock.json — tam sürüm kilidi, tekrarlanabilir derlemeler için zorunlu
  • npm Registry — 2 milyondan fazla modül ile en büyük paket kaydı
  • npm audit — otomatik güvenlik açığı düzeltme ile bağımlılık güvenlik denetimi
  • npm çalışma alanları — paylaşılan node_modules ile monorepo yönetim mekanizması

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun