npm
Node Package Manager
Kısaca
npm, Node.js'in varsayılan paket yöneticisi ve dünyanın en büyük yazılım deposudur; bir projenin bağımlılıklarını indirir ve sürümlerini takip eder.
npm nedir?
npm, 2010'da Isaac Z. Schlueter tarafından geliştirildi ve her Node.js kurulumuyla birlikte gelir. İki parçası vardır: paketleri kuran ve yöneten bir komut satırı aracı ve herkesin yayımlayabildiği milyonlarca açık kaynaklı JavaScript paketinin bulunduğu çevrimiçi bir depo olan npm registry. 2020'den bu yana GitHub'a aittir.
Bir proje bağımlılıklarını test ve build gibi betiklerle birlikte bir package.json dosyasında listeler. npm install paketleri ve onların bağımlı olduğu paketleri bir node_modules klasörüne indirir ve tam sürümleri package-lock.json dosyasına kaydeder; böylece her geliştirici ve sunucu aynı seti alır. Sürümler anlamsal sürümlemeyi (semantic versioning) izler; ^4.2.0 gibi aralıklar da uyumlu güncellemelere izin verir.
npm run, package.json'daki betikleri çalıştırır; npx de bir paketin komutunu, örneğin yeni bir proje oluşturmak için, onu global olarak kurmadan çalıştırır. pnpm, Yarn ve Bun gibi alternatifler aynı depoyu ve package.json'u kullanır; ama paketleri farklı biçimde, çoğu zaman daha hızlı ya da daha az disk alanıyla kurar.
Sık yapılan bir yanlış, npm'in yalnızca sunuculardaki Node.js için olduğu düşüncesidir. React, Vite ve TypeScript gibi ön yüz araçlarının ve kütüphanelerinin çoğu da onunla kurulur. Bir paketi kurmak onun kurulum betiklerini çalıştırabildiği ve birçok dolaylı bağımlılığı beraberinde getirdiği için depo, tedarik zinciri saldırılarının (supply chain attack) da hedefi olmuştur; bu yüzden kilit dosyaları ve denetimler önemlidir.
Önemli noktalar
- npm, Node.js'in paket yöneticisi ve en büyük JavaScript paket deposudur.
- package.json bağımlılıkları ve betikleri listeler; package-lock.json tam sürümleri sabitler.
- npm install node_modules'u doldurur; npm run betikleri çalıştırır; npx paket komutlarını çalıştırır.
- pnpm, Yarn ve Bun aynı depoyu kullanan alternatiflerdir.
- Kilit dosyaları ve denetimler tedarik zinciri saldırılarına karşı korunmaya yardım eder.
Örnek
{
"name": "my-app",
"version": "1.0.0",
"scripts": {
"dev": "vite",
"test": "vitest"
},
"dependencies": {
"react": "^19.0.0"
},
"devDependencies": {
"vite": "^7.0.0",
"vitest": "^3.0.0"
}
}Sık sorulan sorular
npm ile npx arasındaki fark nedir?
npm paketleri kurar ve yönetir. npx ise bir paketin komutunu çalıştırır, kurulu değilse onu geçici olarak indirir; bu da proje oluşturucular gibi tek seferlik araçlar için kullanışlıdır.
package-lock.json nedir?
npm'in yazdığı, dolaylı olanlar dahil kurulan her paketin tam sürümünü kaydeden bir dosyadır; böylece başka makinelerdeki kurulumlar aynı sonucu verir. Sürüm kontrolüne eklenmelidir.
npm, Yarn ve pnpm arasındaki fark nedir?
Üçü de package.json'u kullanarak aynı depodan paket kurar. Yarn ve pnpm daha hızlı ya da daha verimli olmak için geliştirildi; örneğin pnpm her paket sürümünü diskte bir kez saklar ve projelere bağlantıyla ekler.
İlgili sayfalar
- Node.jsBackend ve API'ler, s. 31Node.js, JavaScript'i tarayıcı dışında çalıştıran, en çok web sunucuları, API'ler ve komut satırı araçları için kullanılan açık kaynaklı çalışma ortamıdır.
- JavaScriptWeb Geliştirme, s. 25JavaScript, web tarayıcılarında sayfaları etkileşimli hale getiren ve Node.js gibi çalışma ortamlarıyla sunucularda da çalışan programlama dilidir.
- Semantic VersioningSürüm Kontrolü, s. 35Semantic versioning, her bölümün bir sürümün uyumluluğu bozduğunu, özellik eklediğini ya da hata düzelttiğini belirttiği MAJOR.MINOR.PATCH şemasıdır.
- Tedarik Zinciri SaldırısıGüvenlik, s. 43Tedarik zinciri saldırısı, uygulamanın kendisini değil, açık kaynak paketi, derleme aracı veya güncelleme sunucusu gibi dayandığı bir bileşeni ele geçirir.
- MonorepoSürüm Kontrolü, s. 31Monorepo, uygulamalar, servisler ve paylaşılan kütüphaneler gibi birçok projenin kodunu birlikte yönetilen tek bir sürüm kontrol deposunda tutma yaklaşımıdır.
- BundlerWeb Geliştirme, s. 4Bundler, JavaScript modüllerini ve bağımlılıklarını tarayıcıların hızlıca indirip çalıştırabileceği birkaç optimize dosyada birleştiren bir derleme aracıdır.
- Paket YöneticisiProgramlamanın Temelleri, s. 43Paket yöneticisi, yazılım paketlerini ve onların bağımlılıklarını kuran, güncelleyen ve kaldıran, sürümleri otomatik olarak çözen bir araçtır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin