Npx Nedir?
npm frontend geliştiriciler tarafından sıkça kullanılan ve proje içerisinde ihtiyaç duyduğumuz javascript paketlerini indirebildiğimiz bir araçtır. Bu araç ile kullanmak istediğimiz paketleri local veya global olarak yükleyebiliriz.
Bir javascript paketi proje içerisinde kullanılıp kaynak koda dahil olabileceği gibi kaynak koda dahil olmadan bir takım görevleri yerine getirmek için de kullanılabilir. Kaynak koda dahil olmayan paketler genellikle cli üzerinden üstlendikleri görevi yerine getirirler. mocha
, gulp
, create-react-app
bu tip paketlere örnektir.
Cli üzerinden çalışan paketler genellikle golabl olarak indirilip paket isimleriyle çağırılırlar. Fakat global olarak paket kurmanın aşağıdaki gibi bazı dezavantajları olabilir:
- Projeler farklı versiyondaki global paketlere ihtiyaç duyabilir.
- Kullanıcının global olarak paket kurmaya izni olmayabilir.
- Global paketler disk'de gereksiz yer kaplarlar.
npm@5.2.0 versiyonuyla birlikte herhangi bir paketi global olarak kurmadan da çalıştırabilen npx hayatımıza girdi. npx herhangi bir paketi çalıştırmak için önce local'deki node_modules
klasörüne bakar, eğer bu klasörde istenilen paketi bulamazsa bu paketi kurar ve çalıştırır. Kurulan paket de herhangi bir yerde depolanmaz.
npx create-react-app my-example-app
Yukarıdaki örnekte create-react-app
ile bir proje oluşturmak istediğimizde öncelikle npx local ortamımızda create-react-app
paketinin var olup olmadığına bakacak var ise çalıştıracak eğer böyle bir paket yoksa bu paketi indirdikten sonra çalıştıracaktır.
npm install --save-dev gulp gulp-cli
gulp # gulp is not recognized as an internal or external command
./node_modules/.bin/gulp # node_modules altından paket çalıştırmak
npx gulp # npx ile local bir paket çalıştırmak
Yukarıdaki örnekte de proje bağımlılığı olarak kurduğumuz gulp
paketini ismiyle çalıştırmak istediğimizde maalesef hata alıyoruz. Çünkü bir javascript paketini ismiyle çalıştımak için global olarak yüklememiz gerekir. Çözüm olarak node_modules
altından bu paketi çalıştırabilir veya npx ile kolayca local ortamımızdaki paketi ismiyle çalıştırabiliriz.
Yorumlar
Soru, cevap ve destekleriniz için aşağıdan yorum bırakmayı unutmayın.