emirhanHCL 1
emirhanHCL
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
farkmt2official 1
farkmt2official
mannaxxx 1
mannaxxx
Bvural41 1
Bvural41
Agora Metin2 1
Agora Metin2
Hikaye Ekle

[NODE JS] npx Komutu ile Paket Çalıştırma

nodejs.png


[NODE JS] npx Komutu ile Paket Çalıştırma​


Merhaba arkadaşlar. npx komutu npm 5.2 ile birlikte geldi ve paket çalıştırma konusunda hayatımızı çok kolaylaştırdı. Global yükleme yapmadan paketleri çalıştırabilmek gerçekten büyük bir kolaylık. Ben artık global paket yüklemek yerine hemen her şeyi npx ile çalıştırıyorum. Bugün npx'in ne olduğunu, nasıl çalıştığını ve hangi durumlarda kullanmanız gerektiğini anlatacağım.

npx Nedir ve Nasıl Çalışır?​


npx bir paket çalıştırma aracıdır. Üç farklı şekilde çalışır: yerel node_modules'tan çalıştırma, global paketlerden çalıştırma ve paketi geçici olarak indirip çalıştırma. En güzel özelliği üçüncü seçenek, yani bir paketi yüklemeden tek seferlik çalıştırabilmeniz. Çalıştırma bittikten sonra paket otomatik temizlenir.

Tecrübeme göre npx'in en çok kullanıldığı senaryolar: proje scaffolding (create-react-app, create-next-app gibi), tek seferlik araçlar (npm-check-updates, license-checker gibi) ve yerel paketlerin script'siz çalıştırılması.

JavaScript:
// === NPX KULLANIM ÖRNEKLERİ ===

// Terminal komutları:

// 1. Yerel paketi çalıştırma
// Proje bağımlılığı olarak yüklü eslint'i çalıştır:
// npx eslint src/             (npx olmadan: ./node_modules/.bin/eslint src/)
// npx jest --watch            (npx olmadan: ./node_modules/.bin/jest --watch)
// npx tsc --init              (npx olmadan: ./node_modules/.bin/tsc --init)
// npx prettier --write src/

// 2. Geçici indirip çalıştırma (global yükleme gerekmez!)
// npx create-react-app my-app
// npx create-next-app@latest my-app
// npx create-vite my-app
// npx express-generator my-api
// npx degit user/repo my-project

// 3. Belirli versiyon çalıştırma
// npx node@18 index.js            (farklı Node versiyonuyla çalıştır)
// npx typescript@5.0 tsc --init   (belirli TypeScript versiyonu)

// 4. GitHub repo'dan çalıştırma
// npx github:user/repo

// 5. Sık kullanılan npx komutları
const sikKullanilanlar = [
    { komut: 'npx create-react-app app', aciklama: 'React projesi oluştur' },
    { komut: 'npx create-next-app@latest', aciklama: 'Next.js projesi oluştur' },
    { komut: 'npx create-vite', aciklama: 'Vite projesi oluştur' },
    { komut: 'npx create-express-api', aciklama: 'Express API projesi oluştur' },
    { komut: 'npx npm-check-updates -u', aciklama: 'Paket versiyonlarını güncelle' },
    { komut: 'npx depcheck', aciklama: 'Kullanılmayan bağımlılıkları bul' },
    { komut: 'npx license-checker', aciklama: 'Lisans bilgilerini listele' },
    { komut: 'npx http-server', aciklama: 'Basit HTTP sunucu başlat' },
    { komut: 'npx serve', aciklama: 'Statik dosya sunucusu başlat' },
    { komut: 'npx json-server db.json', aciklama: 'Sahte REST API başlat' },
    { komut: 'npx eslint --init', aciklama: 'ESLint konfigürasyonu oluştur' },
    { komut: 'npx tsc --init', aciklama: 'tsconfig.json oluştur' },
    { komut: 'npx prettier --write .', aciklama: 'Tüm dosyaları formatla' },
    { komut: 'npx kill-port 3000', aciklama: 'Portu kullanan process'i kapat' },
    { komut: 'npx envinfo', aciklama: 'Sistem bilgilerini göster' }
];

console.log('=== Sık Kullanılan npx Komutları ===');
console.table(sikKullanilanlar);

npx vs npm Farkı ve İpuçları​


npx ve npm farklı şeyler yapar: npm paket yönetir (yükle, kaldır, güncelle), npx ise paket çalıştırır. npm install ile bir paketi yükleyip sonra çalıştırmak yerine npx ile tek adımda çalıştırabilirsiniz. Bu özellikle scaffolding araçlarında çok kullanışlı çünkü create-react-app'i global olarak yükleyip güncel tutmak yerine her seferinde npx ile son versiyonu çalıştırırsınız.

Ha bu arada, npx çalıştırdığınız paketin güvenilir olduğundan emin olun. npm registry'den indirilen herhangi bir kodu çalıştırdığınız için typosquatting saldırılarına dikkat etmelisiniz. Paket adını doğru yazdığınızdan emin olun.

JavaScript:
// === NPX vs NPM vs GLOBAL ===

// Senaryo: ESLint kullanmak istiyorsunuz

// Yöntem 1: Global yükleme (ÖNERİLMEZ)
// npm install -g eslint
// eslint src/
// Sorun: Farklı projelerde farklı ESLint versiyonu gerekebilir

// Yöntem 2: Yerel yükleme + npm script (İYİ)
// npm install -D eslint
// package.json: "scripts": { "lint": "eslint src/" }
// npm run lint

// Yöntem 3: Yerel yükleme + npx (İYİ)
// npm install -D eslint
// npx eslint src/

// Yöntem 4: Geçici çalıştırma (TEK SEFERLİK İŞLER İÇİN)
// npx eslint --init
// (Sadece init için geçici indirir, çalıştırır, temizler)

// npx karar ağacı
function npxKullanimKarari(senaryo) {
    const kararlar = {
        'scaffolding': {
            oneri: 'npx kullan',
            ornek: 'npx create-react-app my-app',
            sebep: 'Tek seferlik, güncel versiyonu indirir'
        },
        'proje-araci': {
            oneri: 'Yerel yükle + npx veya npm script',
            ornek: 'npm i -D eslint && npx eslint src/',
            sebep: 'Versiyon proje ile kilitli olmalı'
        },
        'tek-seferlik-kontrol': {
            oneri: 'npx ile geçici çalıştır',
            ornek: 'npx depcheck',
            sebep: 'Sürekli gerekmeyen araç'
        },
        'cli-araci': {
            oneri: 'Global yükle VEYA npx',
            ornek: 'npm i -g pm2 VEYA npx pm2',
            sebep: 'Sık kullanılan CLI araçları global olabilir'
        },
        'farkli-versiyon-test': {
            oneri: 'npx ile versiyon belirterek çalıştır',
            ornek: 'npx typescript@4.9 tsc file.ts',
            sebep: 'Geçici olarak farklı versiyon test etmek'
        }
    };

    return kararlar[senaryo] || { oneri: 'Duruma göre karar ver' };
}

console.log('
=== npx Kullanım Kararları ===');
const senaryolar = ['scaffolding', 'proje-araci', 'tek-seferlik-kontrol', 'cli-araci', 'farkli-versiyon-test'];
senaryolar.forEach(s => {
    const karar = npxKullanimKarari(s);
    console.log(`
${s}:`);
    console.log(`  Öneri: ${karar.oneri}`);
    console.log(`  Örnek: ${karar.ornek}`);
    console.log(`  Sebep: ${karar.sebep}`);
});

// npm exec (npm 7+ ile gelen modern alternatif)
console.log('
=== npm exec (Modern Alternatif) ===');
console.log('npm 7+ ile npx yerine "npm exec" kullanılabilir:');
console.log('  npm exec -- eslint src/');
console.log('  npm exec --package=create-react-app -- create-react-app my-app');
console.log('  npm exec -c "eslint src/ && prettier --check src/"');
console.log('');
console.log('npx hala çalışıyor ve daha kısa, genellikle npx tercih edilir.');

npx modern Node.js geliştirmenin vazgeçilmez aracı. Global kirliliği önler, her zaman güncel versiyonu kullanmanızı sağlar ve tek seferlik işleri kolaylaştırır. Scaffolding ve tek seferlik araçlar için npx, proje araçları için yerel yükleme kuralını uygulayın. Kolay gelsin.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst