Node Paket Yöneticisi (NPM) – Genel Bakış
Merhaba,
Bu içeriğimizde Node.js için yazılmış olan paket yöneticisi üzerine(NPM) konuşuyor olacağız.
Paket Nedir?
Node.js’de herşey ufak parçalara ayrılmıştır ve bu ufak parçalar bir araya gelerek anlamlı bir bütünü ifade etmektedirler. İşte bu parçalara bizler “paket” bir diğer adıyla “modül” demekteyiz.
Örneğin; mail işlemleri, şifreleme işlemleri, dil işlemleri ve veritabanı işlemleri vs. için farklı paketler mevcuttur.
Herşey paket olarak tasarlandığından dolayı, herhangi bir pakette olan yeniliği kullanabilmek için komple Node.js’i güncellemek zorunda kalmaksızın direkt olarak ilgili paketi güncellememiz yeterli olmaktadır. Dolayısıyla paket bazlı sürüm güncellemesi, komple framework’ün yeni versiyonunu gerektirmediğinden dolayı Node.js’i oldukça etkili bir yapıya büründürmekte ve biz yazılımcılara oldukça hız ve zamandan olumlu maliyet kazandırmaktadır.
Eğer ki Node.js’de ki hali hazırda bulunan tüm paketleri görmek istiyorsanız www.npmjs.com adresini inceleyebilirsiniz.
Paket Yükleme
Node.js’de bir paketi yüklemek için aşağıdaki prototipte olduğu gibi bir komut vermeniz yeterli olacaktır.
npm install [paket adı]
Örnek olarak alasql paketini aşağıdaki gibi projemize yükleyebiliriz.
Yerel ve Global Paketler
Birden çok organize projeler üzerinde çalışdığı durumlarda kimi modüller projeye özel kullanılırken kimisinde ise ortak kullanım sergilenmektedir. Eğer ki, bir paketi birden fazla projede ortak kullanacaksak her birine ayrı ayrı kurulum gerçekleştirmektense, ilgili paketi global olarak kurarak tek seferde net çözüm sağlayabiliriz.
Bu işlem için aşağıdaki prototipte çalışmamız yeterli olacaktır.
npm install -g [paket adı]
ya da
npm install -global [paket adı]
Örnek olarak bu sefer alasql modülünü global olarak aşağıdaki gibi kurabiliriz.
Paketlerin Varsayılan Yüklenme Adresleri
Paketlerin varsayılan yüklenme adreslerini local ve global olmak üzere iki türlü görebiliriz.
- Local paketler için;
npm root
- Global paketler için;
npm root -g
ya da
npm root -global
Kurulu Paket Listesi
Kurulu paketlerin listelerinide local ve global olmak üzere iki türlü elde edebiliriz.
-
Local paketler için;
npm list
Bu şekilde alt modüllerde dahil hepsi listelenecektir. Eğer ki sadece ana modülleri listelemek istiyorsanız;
npm list -depth=0
şeklinde komutunuzu çalıştırmanız gerekmektedir.
-
Global paketler için;
npm list -g
ya da
npm list -global
Yukarıda değindiğimiz benzer mantıkta bu şekilde alt modüllerde dahil hepsi listelenecektir. Eğer ki sadece ana modülleri listelemek istiyorsanız;
npm list -g --depth=0
ya da
npm list -global --depth=0
şeklinde komutunuzu çalıştırmanız gerekmektedir.
Package.json Dosyası
Package.json dosyası, Node.js’de paket bağımlılık yönetimini sağlayabilmek adına oluşturulmuş bir JSON dosyasıdır. Kullanmak istediğimiz modülleri içerisine belirttikten sonra tek elden modül kurulumunu gerçekleştirebiliyoruz.
Package.json dosyasını oluşturabilmek için;
npm init
komutunun çalıştırılması gerekmektedir.
Bu komutu çalıştırdıktan sonra sistem tarafından peşi sıra aşağıdaki sorularla karşılaşılmaktadır;
- package name
Paket ismini belirtiniz. - version
Versiyonu doğrulayınız. - description
Açıklama belirtiniz. - entry point
Projenin ana dosyasını/sınıfını belirtiniz.. - test command
Test sorgusu belirtiniz.. - git repository
Git kaynağı belirtiniz. - keywords
Anahtar sözcük belirtiniz. - author
Yazarı belirtiniz. - lisence
Lisansı belirtiniz.
Bu bilgileri opsiyonel olarak belirttikten sonra package.json dosyası oluşturulacaktır. İçeriğine göz atarsak eğer aşağıdaki gibi json formatında bir veriyle karşılaşılmaktadır.
{ "name": "ecmascript", "version": "1.0.0", "description": "", "main": "index.js", "dependencies": { "alasql": "^0.4.8" }, "devDependencies": {}, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
Eğer ki yukarıdaki soruları es geçip direkt olarak dosyasının oluşturulmasını istiyorsanız komutu aşağıdaki gibi yazmanız yeterlidir.
npm init -y
Eğer ki projede package.json dosyası oluşturulmuş ise paket yüklemelerinde yüklenen paketlerin package.json dosyasına kaydedilmesi için aşağıdaki gibi komut yazılmalıdır.
npm install [paket adı] --save
Eğer ki, package.json dosyası içerisindeki “dependencies” alanında belirtilmiş paketleri projeye tek elden yüklemek istiyorsanız aşağıdaki komutu yazmanız yeterli olacaktır.
npm install
Bir Paketin Eski Versiyonunu Yükleme
Eğer ki yükleyeceğiniz paketin eski versiyonunu istiyorsanız aşağıdaki prototipte olduğu gibi komutunuzu yazmanız gerekmektedir.
npm install [paket adı]@[versiyon]
Örneğin;
npm install alasql@0.4.7
Yeni Versiyonu Olan Paketleri Listeleme
Local ya da global tüm paketlerin yeni versiyonlarını check ederek listeletebiliriz.
npm outdated
Paket Güncelleme
Bir paketi son çıkan versiyonu ile güncellemek için aşağıdaki gibi komut verilmesi gerekmektedir.
npm update [paket adı]
Eğer ki son versiyonu çıkan tüm paketleri güncellemek istiyorsanız;
npm update
komutunu çalıştırmanız yeterlidir.
Bağımlılık Yönetimi
Kimi paketler vardır ki, sadece geliştirme ortamında kullanılmaktadırlar lakin yayında(canlı ortam) kullanılmamaktadırlar. Bu paketlerden hangisinin canlı ortama taşınıp taşınmayacağını package.json dosyasındaki “dependencies” alanına ekli olup olmaması belirlemektedir.
npm install [paket adı] --save
şeklinde yüklenen bir paket direkt olarak “dependencies”e ekleneceğinden dolayı ilgili paket hem geliştirme ortamında hem de canlı ortamda kullanılacak manasına gelmektedir ve canlı ortamada taşınmaktadır.
Eğer ki bir paketi sadece geliştirme ortamında kullanmak istiyor ve canlı ortama taşımak istemiyorsak ilgili paketi “devDependencies” alanına eklememiz gerekmektedir. Bu işlem için;
npm install [paket adı] --save -dev
şeklinde komutumuzu yazmamız ilgili paketin “devDependencies” alanına eklenmesini sağlayacaktır.
Script Tanımlama
Elimizde aşağıdaki gibi bir script olduğunu varsayalım.
--- module.js --- const merhaba = () => { console.log("Merhaba"); }; merhaba();
Bu scripti çalıştırmak için;
node module
şeklinde komutumuzu çalıştırmamız gerekmektedir.
Lakin ben bu şekilde script dosya adıyla çalışma yapmak istemiyorum diyorsanız package.json dosyasında bu scripti aşağıdaki gibi tanımlayabilir ve kullanabilirsiniz.
{ "name": "ECMAScript", "version": "1.0.0", "description": "", "main": "index.js", "dependencies": { "alasql": "^0.4.8" }, "devDependencies": {}, "scripts": { "merhaba": "node module", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
Dikkat ederseniz “scripts” altında “merhaba” isimli bir değere “modul.js” scriptini çalıştıracak olan “node module” komutunu tanımlamış bulunmaktayız. Bu noktadan itibaren aşağıdaki gibi “merhaba” değeri üzerinden ilgili scripti çalıştırabilmekteyiz.
npm run merhaba
Paket Kaldırma
Eğer ki bir paketi silmek istiyorsanız aşağıdaki kodu çalıştırabilirsiniz.
npm uninstall [paket adı]
Bu şekilde paket hem fiziksel olarak hem de package.json dosyasından silinecektir.
Eğer package.json dosyasından silinmesini istemiyorsanız;
npm uninstall [paket adı] --no -save
şeklinde kodunuzu yazmanız gerekmektedir.
Eğer ki global paketleri silecekseniz;
npm install -g [paket adı]
ya da
npm install -global [paket adı]
şeklinde kodu çalıştırmanız yeterli olacaktır.
Node paket yöneticisi(NPM) ile ilgili tüm konulara değinmeye gayret ettim. Umarım bol bilgili ve faydalı bir içerik sunmuşumdur.
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…