Ana Sayfa/Blog/NPM Paket Yönetimi: Komutlar, package.json ve Versiyon Kontrolü

NPM Paket Yönetimi: Komutlar, package.json ve Versiyon Kontrolü

NPM (Node Package Manager), JavaScript ekosisteminin varsayılan paket yöneticisidir. 2 milyondan fazla pakete ev sahipliği yapan npm registry, dünyanın en büyük yazılım kütüphanesidir. Node.js ile birlikte yüklü olarak gelir ve projelerin bağımlılıklarını yönetmek, script çalıştırmak ve paket yayınlamak için kullanılır.

Proje Başlatma: npm init

# İnteraktif kurulum
npm init

# Varsayılan değerlerle hızlı kurulum
npm init -y

Bu komut projenizin kök dizininde package.json dosyasını oluşturur. Bu dosya projenizin kimliğidir — adı, sürümü, bağımlılıkları ve çalıştırılabilir scriptlerini içerir.

package.json Yapısı

{
  "name": "proje-adi",
  "version": "1.0.0",
  "description": "Proje açıklaması",
  "main": "index.js",
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "eslint .",
    "test": "jest"
  },
  "dependencies": {
    "react": "^18.2.0",
    "next": "^14.0.0"
  },
  "devDependencies": {
    "eslint": "^8.50.0",
    "jest": "^29.7.0"
  }
}

dependencies vs devDependencies

Paket Kurulumu: npm install

# Tüm bağımlılıkları kur (package.json'dan)
npm install

# Belirli bir paket kur (dependencies'e ekler)
npm install axios

# Geliştirme bağımlılığı olarak kur
npm install -D eslint

# Global olarak kur (sistem genelinde)
npm install -g typescript

# Belirli bir sürüm kur
npm install [email protected]

# Birden fazla paket kur
npm install express cors helmet

Semantic Versioning (SemVer)

NPM, MAJOR.MINOR.PATCH formatında sürüm numaralandırması kullanır:

package.json'daki versiyon ön ekleri:

"dependencies": {
  "express": "4.18.2",     // Tam olarak bu sürüm
  "react": "^18.2.0",      // >=18.2.0, <19.0.0 (caret: minor güncellemelere izin verir)
  "lodash": "~4.17.21",    // >=4.17.21, <4.18.0 (tilde: yalnızca patch güncellemeler)
  "moment": "*"             // Herhangi bir sürüm (tehlikeli, kaçının!)
}

Tavsiye: Varsayılan ^ (caret) çoğu proje için uygundur. Kritik projelerde ~ (tilde) veya sabit sürüm kullanmayı düşünün.

Lock Dosyaları: package-lock.json

package-lock.json, projenizin tam olarak hangi sürümlerle çalıştığını kaydeden bir kilit dosyasıdır. Bu dosya sayesinde farklı ortamlarda (CI/CD, takım arkadaşları) birebir aynı bağımlılık ağacı kurulur.

# CI/CD ortamları için: lock dosyasından birebir kurulum
npm ci

Paket Güncelleme ve Kaldırma

# Güncellenebilir paketleri listele
npm outdated

# Tüm paketleri güncelle (semver kurallarına göre)
npm update

# Belirli bir paketi güncelle
npm update axios

# Paket kaldırma
npm uninstall axios

# Global paketi kaldırma
npm uninstall -g typescript

NPM Scripts

package.json'daki scripts bölümü, sık kullanılan komutları kısaltmanızı sağlar:

"scripts": {
  "dev": "next dev",
  "build": "next build && npm run lint",
  "lint": "eslint . --fix",
  "test": "jest --coverage",
  "prepare": "husky install"
}
# Script çalıştırma
npm run dev
npm run build

# Özel scriptler: "run" kısa yolları
npm test      # npm run test ile aynı
npm start     # npm run start ile aynı

npx: Tek Seferlik Çalıştırma

npx, paketi global olarak kurmadan doğrudan çalıştırmanızı sağlar:

# create-react-app'i kurmadan çalıştır
npx create-react-app my-app

# create-next-app
npx create-next-app@latest

# Belirli bir Node sürümüyle çalıştır
npx -p node@16 node -v

NPM paketlerini karşılaştırmak veya package.json dosyanızı oluşturmak mı istiyorsunuz? SiteScripti'nin NPM Paket Karşılaştırma ve package.json Oluşturucu araçlarını kullanabilirsiniz.

Bu konuyla ilgili araçlarımızı da deneyin: JSON Formatter, ENV Generator, Docker Compose Oluşturucu

← Tüm Yazılar