İçeriğe geç

NPM vs NPX

NPM ve NPX Farki

Daha önce Node.js kullandıysanız kesinlikle npm kullanmışsınızdır.

npm (node package manager), Node.js’yi kurduğunuzda kutudan çıkan bağımlılık/paket yöneticisidir. Geliştiricilerin paketleri hem küresel hem de yerel olarak kurmaları için bir yol sağlar.

Bazen belirli bir pakete göz atmak ve bazı komutları denemek isteyebilirsiniz. Ancak bağımlılıkları yerel node_modules klasörünüze kurmadan bunu yapamazsınız.

Npx’in devreye girdiği yer burasıdır.

Bu yazıda npm ve npx arasındaki farklara bakacağız ve her ikisinden de en iyi şekilde nasıl yararlanabileceğimizi öğreneceğiz.

Öncelikle npm’nin gerçekte ne olduğunu ve onunla neler yapabileceğimizi anlayalım.

npm the package manager

npm birkaç şeydir. Her şeyden önce, açık kaynaklı Node.js projelerinin yayınlanmasına yönelik çevrimiçi bir depodur.

İkincisi, bu paketleri kurmanıza ve sürümlerini ve bağımlılıklarını yönetmenize yardımcı olan bir CLI aracıdır. Npm’de yüz binlerce Node.js kütüphanesi ve uygulaması bulunmaktadır ve her gün çok daha fazlası eklenmektedir.

npm tek başına herhangi bir paketi çalıştırmaz. Bir paketi npm kullanarak çalıştırmak istiyorsanız bu paketi package.json dosyanızda belirtmeniz gerekir.

Yürütülebilir dosyalar npm paketleri aracılığıyla yüklendiğinde, npm bunlara bağlantılar oluşturur:

  • yerel kurulumlarda ./node_modules/.bin/ dizininde oluşturulmuş bağlantılar bulunur
  • genel kurulumlarda genel bin/ dizininden oluşturulan bağlantılar bulunur (örneğin: Linux’ta /usr/local/bin veya Windows’ta %AppData%/npm)

Bir paketi npm ile çalıştırmak için yerel yolu şu şekilde yazmanız gerekir:

$ ./node_modules/.bin/your-package

veya yerel olarak kurulmuş bir paketi komut dosyaları bölümünde package.json dosyanıza ekleyerek çalıştırabilirsiniz:

{
"name": "your-application",
"version": "1.0.0",
"scripts": {
"your-package": "your-package"
}
}

Daha sonra betiği npm run komutunu kullanarak çalıştırabilirsiniz:

npm run your-package

Bir paketi düz npm ile çalıştırmanın oldukça ugras gerektirdiğini görebilirsiniz.

Neyse ki, npx’in kullanışlı olduğu yer burasıdır.

npx the package runner

Npm sürüm 5.2.0’dan beri npx, npm ile önceden paketlenmiştir. Yani bugünlerde neredeyse bir standart.

npx aynı zamanda amacı npm kayıt defterinde barındırılan bağımlılıkların kurulumunu ve yönetimini kolaylaştırmak olan bir CLI aracıdır.

Normalde npm aracılığıyla kuracağınız herhangi bir Node.js tabanlı yürütülebilir dosyayı çalıştırmak artık çok kolay.

Mevcut npm sürümünüz için zaten kurulu olup olmadığını görmek için aşağıdaki komutu çalıştırabilirsiniz:

npx -v

Eger yoksa asagidaki komut ile kurabilirsiniz.

npm install -g npx

Kurduğunuzdan emin olduktan sonra, npx’i son derece yararlı kılan birkaç kullanım örneğine bakalım.

Yerel olarak kurulmuş bir paketi kolayca çalıştırın

Yerel olarak kurulmuş bir paketi çalıştırmak istiyorsanız tek yapmanız gereken şunu yazmaktır:

npx your-package

npx, $PATH’de veya yerel proje ikili dosyalarında <command> veya <package>’in var olup olmadığını kontrol edecek ve eğer öyleyse onu çalıştıracaktır.

Daha önce kurulmamış paketleri yürütün

Bir diğer büyük avantaj ise daha önce kurulmamış bir paketi çalıştırabilme yeteneğidir.

Bunun icin:

npx cowsay wow

Bu harika çünkü bazen yalnızca bazı CLI araçlarını kullanmak istersiniz ancak bunları yalnızca test etmek için küresel olarak yüklemek istemezsiniz.

Bu, bir miktar disk alanından tasarruf edebileceğiniz ve bunları yalnızca ihtiyacınız olduğunda çalıştırabileceğiniz anlamına gelir. Bu aynı zamanda global değişkenlerinizin daha az kirleneceği anlamına da gelir.

Kodu doğrudan GitHub’dan çalıştırın

Herhangi bir GitHub özetini ve deposunu çalıştırmak için npx’i kullanabilirsiniz.

Farklı paket sürümlerini test edin

Detay gelecek

Sonuc

npx, sürüm oluşturma, bağımlılık sorunları ve denemek istediğimiz gereksiz paketlerin kurulmasından kaçınmamıza yardımcı olur.

Ayrıca paketleri, komutları, modülleri ve hatta GitHub özetlerini ve depolarını yürütmenin açık ve kolay bir yolunu sağlar.

Daha önce npx kullanmadıysanız şimdi başlamanın tam zamanı!