Bloğa geri dön

npm ve package.json ile Node.js Modüllerini Kullanma: Bir Eğitim

npm ve package.json ile Node.js Modüllerini Kullanma: Bir Eğitim

Node.js açık kaynaklı, platformlar arası bir Javascript çalışma ortamıdır. Son birkaç yıldır, hızlı Girdi/Çıktı (I/O) performansı ve rakipsiz JavaScript sözdizimi sayesinde arka uç web geliştirme için popüler bir seçim haline gelmiştir. Ayrıca, uyarlanabilir yapısı hızlı özelleştirmeye olanak tanıyarak bu sunucu teknolojisinin rakiplerinden sıyrılmasını sağlar.

Node.js Paket Yöneticisi — Genel Bir Bakış

Node.js Paket Yöneticisi veya npm, JavaScript için varsayılan paket yöneticisidir. Npm genellikle proje betiklerini yüklemek ve harici modülleri bir Node.js projesinde çalıştırmak için kullanılır. Bunun yanı sıra, bir projede yüklü olan modülleri package.json dosyasını kullanarak takip eder; bu dosya proje’nin dizininde yer alır. Npm aşağıdaki bilgileri depolar ve kaydeder:

  • Bir proje için gerekli modüller ve varsa bunların yüklü sürümleri.
  • Yazar ve lisans gibi detayları içeren bir projenin meta veri açıklaması.
  • Projeyle ilgili veya hedefe yönelik görevleri otomatikleştirmek için yürütülebilir betikler.

Bu eğitimde, size Node.js modüllerini npm ve package.json ile nasıl kullanacağınızı göstereceğiz..

Hadi Başlayalım!

Gereksinimler

Bu eğitimi takip etmek için aşağıdakilere ihtiyacınız olacak:

Adım 1: Bir package.json dosyası oluşturun

Eğitimimize, Node.js locator modülünü kullanan örnek bir proje ile başlayalım. Proje, kullanıcının IP adresini almayı ve çıktıyı kullanıcının geldiği ülke olarak paylaşmayı amaçlamaktadır. Biz Node.js modüllerinin npm ile kullanımını anlamaya odaklandığımız için modülleri manuel olarak yazmaya gerek yoktur. Bunun yerine, projemizde önceden yüklenmiş ve özelleştirilebilir paketleri kullanacağız.

JSON veya JavaScript Nesne Notasyonu, veri paylaşımı ve iletimi için kullanılan standart bir formattır. Başlangıçta, yazılım bağımlılıklarını depolayacak ve yönetecek bir JSON dosyası oluşturacağız. Ancak, manuel olarak bir package.json oluşturmak zahmetli ve zaman alıcıdır. Kolaylık sağlamak için, sıfırdan bir init komutunu kullanarak package.json dosyasını oluşturacağız ve böylece sıfırdan bir JSON yazmak için fazladan kod blokları yazmakla uğraşmayacağız.

  • init komutu

İlk olarak, mkdir komutunu kullanarak yeni bir klasör oluşturalım ve adını locator:

Ardından, yeni oluşturulan klasöre gitmek için cd komutunu kullanın:

Ardından, etkileşimli istemi başlatmak için npm komutunu girin:

Bundan sonra, şu çıktıyı göreceksiniz:

Node.js Modules npm init 1

1. name

Yeni projenizin name alanına (yani mevcut klasöre) yönlendirileceksiniz. Parantez içinde varsayılan değerleri göreceksiniz (). Bu eğitimi basit ve anlaşılır tutmak için varsayılan seçeneklerle devam edeceğiz. Kabul etmek ve devam etmek için ENTER tuşuna basın.

2. version

Bir sonraki değer, projenizi version adıdır ve projenizi npm paket deposunda paylaşırsanız temel bir gereksinimdir.

Not: Node.js paketleri Semantik Sürüm Oluşturma (semver) kılavuzunu takip eder.

İlk sayı: MAJOR (ANA) sürümdür ve yalnızca API değiştiğinde değişir.

İkinci sayı: MINOR (YARDIMCI) sürümdür ve ek özellikler eklendiğinde değişir.

Son sayı: PATCH (YAMA) sürümdür ve bir hata veya kusur giderildiğinde değişir.

3. description

The description alanı, Node.js modülünün çalışma sürecini açıklayan bilgilendirici bir dizedir. Demomuzda, locator projesi kullanıcının IP adresini alacak ve menşe ülkeyi döndürecektir.

Not: Genellikle modüllerin giriş noktası olarak bir index.js dosyası vardır. Bu aynı zamanda npm modüllerinin giriş noktası olan main özelliğidir. Ancak, package.json (npm modüllerinin giriş noktası). Ancak, eğer package.json bulunamazsa, Node.js otomatik olarak index.js dosyasını yükleyecektir.

4. test komutu

Proje testlerinizi çalıştırmak için yürütülebilir bir betik veya komuttur. Test etme işlemi eğitimimizin kapsamı dışında olduğundan, bunu atlayalım ve ENTER tuşuna basalım.

5. init komutu

The init komutu projenin GitHub Deposunu (Repository) soracaktır. Yine bu kısmı atlayıp devam edelim.

6. keywords

Anahtar Kelimeler bir depoyu aramak için kullanılan bir dize dizisidir. Anahtar kelimelerin projenizle doğru ve alakalı tutulması önerilir, böylece sorunsuz bir şekilde izlenebilirler.

Bunları listeleyin anahtar kelimeler dize olarak yazın ve virgülle ayırın. Projemizde, komut satırına ip, country, latitude, ve longitude yazın; bunları içinde anahtar kelimeler olarak eklendiğini göreceksinizpackage.json.

7. author

Treat the author alanını bir geri bildirim ve kullanıcılarınızla etkileşim kurma yolu olarak görün. Örneğin, kullanıcılar modülünüzde bir hata tespit ederse, sizi bilgilendirmek ve hatanın giderilmesini sağlamak için bu alanı kullanabilirler.

  • Biçim: "Ad \<E-posta\> (Web sitesi)".

    • Demo: "Paul\<paul@your_domain\> (https://your_domain)"

E-posta ve web sitesi verilerini eklemek isteğe bağlıdır. Ancak, geçerli bir yazar belirtebilir ve iletişim bilgilerinizi bir author olarak ekleyebilirsiniz. Bilgileri onaylayın ve ENTER.

8. license

The license alanı, kullanıcıların modülünüzü kullanırken bilmesi gereken yasal hüküm ve koşulları gösterir. Node.js modülleri açık kaynaklı olduğundan, npm bunu otomatik olarak ISC-license olarak yapılandırır.

Açık kaynak lisans sayfasına gidin ve ihtiyaçlarınıza en uygun Open Source Initiative lisansını seçin. Komut satırına UNLICENSED yazın (eğer deponuz için bir lisansa ihtiyacınız yoksa). Eğitimimizde varsayılan ISC lisansını kullanacağız. Bu işlemi tamamlamak için ENTER tuşuna basın.

The init komutu package.json dosyasını oluşturacak ve sonucu gösterecektir:

Node.js Modules npm init

Ardından, devam etmek ve ENTER tuşuna basın. package.json dosyasını oluşturun. JSON dosyamız, projemize yükleyeceğimiz tüm modüllerin ve paketlerin kaydını tutacaktır.

Bir sonraki adımda, bağımlılıkları ve Node.js modüllerini yükleyeceğiz.

Adım 2: Bağımlılıkları ve Modülleri Yükleme

Özelleştirilmiş harici kütüphaneler oluşturmak zaman alıcıdır ve yoğun çaba gerektirir. Alternatif olarak, en etkili yol önceden tanımlanmış bağımlılıkları ve harici kütüphaneleri yüklemektir. Eğitimimizde, demo konum belirleyici modülümüzün coğrafi verileri toplamak için harici bir API isteği yapmasını sağlamak amacıyla HTTP kütüphanesini kullanacağız.

Bu kılavuzda, HTTP istekleri yapmak için axios kütüphanesini kullanacağız. İlk olarak, axios yükleyelim:

Yüklemeye npm paketini yükleyerek başlayın ve ardından bunları boşluklarla ayırarak listeleyin. Ayrıca, projenin bir proje bağımlılığı olarak kaydedildiğinden emin olmak için --save etiketini ekleyin.

Çıktıyı göreceksiniz:

Node.js Modules install axios

Open the package.json dosyasını nano veya seçtiğiniz herhangi bir metin düzenleyiciyi kullanarak açın:

Kod bloğunun altında vurgulanan yeni eklenen özelliğe dikkat edin:

Node.js Modules package json

  • Geliştirme Bağımlılıklarını İndirme

Geliştirme bağımlılıkları, proje geliştirmede kullanılan ve projenin üretiminde veya bakımında hiçbir kullanımı olmayan paketlerdir. Bu bağımlılıklar üretim alanlarında etkisiz gibi görünse de, kodların yazılmasında ve yeniden yazılmasında önemli bir rol oynarlar.

Kod denetleyiciler (linter) gibi, geliştirme bağımlılıkları da yazılım geliştirmede hayati bir rol oynar. Çoğunlukla geliştiriciler, proje geliştirme sırasında stil birliğini ve tutarlılığını korumak için code linters kullanırlar; aksi takdirde bu durum üretimde yararsızdır.

Projeniz için bir geliştirme bağımlılığı olarak bir linter yükleyelim. Ayrıca, --save-dev bayrağını kullanarak eslint paketini geliştirme için gerekli bir bağımlılık olarak kaydedin:

Modülleri güncellediğimizde bir sürümle etiketlenmeleri için bağımlılığımıza @6.0.0 ekledik. sembolü@ yüklemek istediğiniz belirli bir etiketi araması için npm programını uyaracaktır. Şimdi, package.json dosyasını tekrar açın:

Çıktıyı göreceksiniz:

dev package json

  • Kendiliğinden oluşturulan dosyalar: node_modules ve package-lock.json

Başlangıçta, Node.js projesine bir paket yüklerken, package.json ve package-lock.json dosyaları otomatik olarak oluşturulur. Çalışma dizininde bu dosyaların varlığını doğrulayın:

Yüklenen bağımlılıkların çoğu node_modules klasörü, bu klasörü sürüm kontrollü deponuza işlememeniz (commit etmemeniz) önerilir. Kurulu bağımlılıkların sayısındaki artışla birlikte, node_modules boyutu da artar.

Buna karşılık, package-lock.json dosyası kurulu olan tam sürümlerin kaydını tutar, bu nedenle node_modules açıkça dahil etmeye gerek yoktur. node_modules klasörünün aksine, bu dosyayı sürüm kontrollü deponuza işleyebilirsiniz çünkü tüm bağımlılıklarınızın ve bunların sürümlerinin ayrıntılı bir gösterimini sunar.

  • Şunu kullanarak yükleyin: package.json

The package.json ve package-lock.json dosyaları, proje geliştirmeye başlamadan önce aynı proje bağımlılıklarını kurmanıza olanak tanır. Dizin ağacınıza gidin ve locator ile aynı dizin seviyesinde yeni bir klasör oluşturun. Yeni klasörü olarak adlandırın:cloned_locator:

Ardından, klasörüne gidin:cloned_locator:

Import package.json ve package-lock.json dosyalarını locator klasöründen klasörüne aktarın:cloned_locator:

The . mevcut klasörü belirtir. Aşağıdaki komutu kullanarak gerekli modülleri yükleyin:

Başlangıçta, npm modülleri yüklemek için package-lock.json dosyasını kontrol edecektir. Kilit dosyası mevcut değilse, kurulumları belirlemek için package.json dosyasını okur.

Genel olarak, package-lock.json üzerinden yükleme yapmak basittir çünkü kilit dosyası modüllerin ve bağımlılıklarının tam sürümünü içerir. Bu, kullanarak yükleme yaptığınızdapackage.json, npm uyumlu ve kararlı bir sürüm bulmak için gereken ekstra zamandan tasarruf sağlayacağı anlamına gelir.

Geliştirme bağımlılıklarını --production etiketini ekleyerek yoksayın:

Bundan sonra, locator klasörüne geri dönün:

  • Global Kurulumlar

Şimdiye kadar, npm modüllerini yerel olarak kurduk. Ancak, paketleri global olarak kurup bunları kabuk komutu veya CLI aracılığıyla kullanma alternatifiniz de vardır. Örneğin, Hexo kütüphanesini kullanarak mevcut locator projesinde gezinebilir ve statik web sitenizi yönetebilirsiniz. -g etiketiyle aşağıdaki komutu kullanarak Hexo CLI'yı global olarak kurun:

Not: Paketleri global olarak kurarken bir hata alırsanız, kök kimlik bilgileriyle bu komutu sudo npm i hexo-cli -g  deneyin.

Paketin başarıyla kurulduğunu doğrulamak için aşağıdaki komutu kullanın:

Çıktıyı göreceksiniz:

hexo version

Adım 3: Modülleri Yönetme ve Güncelleme

Bir paket yöneticisinin yapacağı iş, yalnızca Node.js modüllerini kurmaktan daha fazlasıdır. İstediğiniz gibi listeleyebileceğiniz, güncelleyebileceğiniz, kaldırabileceğiniz ve hatta bir güvenlik katmanı ekleyebileceğiniz pek çok özelleştirme seçeneği mevcuttur.

Bu bölümde şunları nasıl yapacağımızı öğreneceğiz:

  1. Modülleri listeleme

  2. Modülleri güncelleme

  3. Modülleri kaldırma

  4. Modülleri denetleme

Her birini ayrıntılı olarak ele alalım:

  1. Modülleri Listeleme

Modülleri listelemek, adından da anlaşılacağı gibi, projede kurulu olan tüm modüller hakkında size ayrıntılı bilgi verecektir. package.json dosyasını okumak yerine, proje modüllerinizi ayrıntılı olarak öğrenmek için ls veya list komutunu kullanabilirsiniz:

Çıktıyı göreceksiniz:

npm list op

Varsayılan olarak, ls komutu, proje bağımlılıklarını ve bağlı olduğu modülü içeren tüm bağımlılık ağacını listeler. Ancak, kuş bakışı bir görünüm elde edebilir ve açıkça belirli bir modülü de hedefleyebilirsiniz. Bağımlılıkları olmadan kurduğunuz modülleri kontrol etmek için aşağıdaki komutu kullanın:

Çıktıyı göreceksiniz:

npm list depth zero

  1. Modülleri Güncelleme

Herhangi bir yazılım çökmesi veya çakışmasıyla karşılaşmamak için npm modülünüzü güncel tutmanız her zaman önerilir. Güncelleme gerekip gerekmediğini kontrol etmek için aşağıdaki komutu kullanın:

Çıktıyı göreceksiniz:

Outdated

Her bir terimi ayrıntılı olarak anlayalım:

  • Paket (Package): Projenizde kurulu olan mevcut Package paketini listeler.
  • Mevcut (Current): Bu, paketin Current sürümünü gösterir.
  • İstenen (Wanted):Şunu gösterir: npm sürüm gereksinimine en uygun sürüm package.json.
  • En Son: En son sürümü gösterir npm yayınlandı, gerekirse güncellemeniz gerekir.
  • Konum: Paket Konum bağımlılık ağacında.

Önerildiği gibi, npm sürümümüzü kararlı bir sürüme güncelleyebiliriz. Mevcut paketinizi güncellemek için aşağıdaki komutu kullanın:

Çıktıyı göreceksiniz:

update eslint

Bunları tek tek güncellemek yerine, up komutunu kullanarak tüm modülleri tek seferde güncelleyebilirsiniz:

  1. Modülleri Kaldırma

Çoğu zaman bir bağımlılık beklenen çıktıyı göstermeyebilir ve özelleştirilmiş bir bağımlılık oluşturmanız gerekebilir. Bu tür senaryolarda, bağımlılıkları package.json ve package-lock.json dosyalarınızdan kaldırma seçeneğiniz vardır. Diyelim ki, bağımlılık olarak axios bağımlılığına sahipsiniz ve tatmin edici bir sonuç vermiyor. Şüphesiz bu depoyu projenizden kaldıracaksınız. uninstall veya un komutunu kullanarak axios'u kaldırabilirsiniz.:

Çıktıyı göreceksiniz:

Uninstall axios

Her ne kadar uninstall komutu bağımlılığı kaldırmış olsa da, kaldırıldığına dair herhangi bir bildirim almadık. Şimdi kaç bağımlılığımız olduğunu görmek için bağımlılıkları listeleyelim:

Listede axios bağımlılığı olmadığını gösteren çıktıyı göreceksiniz:

npm list

  1. Modülleri Denetleme (Audit)

Projenizde kurulu olan bağımlılıklar herhangi bir potansiyel güvenlik tehdidine yatkınsa, bunları tespit edebilirsiniz. İlk olarak, denetim (audit) modülünün nasıl çalıştığını görmek için request modülünün eski bir sürümünü yüklemeniz gerekir:

Tehditleri veya güvenlik açıklarını düzeltmenizi isteyen çıktıyı göreceksiniz:

add request

Güvenlik açıklarını ve tehditlerle ilgili ayrıntıları genişletmek için audit komutunu kullanın:

Ayrıntılı bir güvenlik raporu göreceksiniz:

Node.js Modules Audit security report

Bu güvenlik açıklarını gidermek için fix komutunu kullanın:

Çıktıyı göreceksiniz:

audit update

Dokuz güvenlik açığından ikisinin düzeltildiğini fark etmiş olabilirsiniz. Ancak, kalan yedi güvenlik açığı bağımlılıklarınızda var olmaya devam eder çünkü audit fix tüm sorunları çözmez. Bu sorunu çözmek için, farklı bir API kullanarak bağımlılığınızı daha yüksek bir sürümle güncellemeniz gerekebilir. Güncelleme yaparken dikkatli olun çünkü bağımlılık ağacının daha üst kısımlarındaki kodları bozma olasılığınız vardır. Güvenlik açıklarının ortadan kalktığını doğrulamak için aşağıdaki komutu kullanın:

Güvenlik açığı tehditlerini çözmek için farklı bir API kullanırken dikkatli olun; çünkü emin değilseniz, bu durum kod işlevselliğinin bozulmasına yol açabilir.

Sonuç

Sonuç olarak, Node.js modüllerinin npm ve package.json ile nasıl kullanılacağını gösterdik. Ek olarak, paket bağımlılıklarımızı listeleme, güncelleme, yönetme, denetleme ve kaldırma yöntemlerini inceledik. Bir sonraki adım olarak, bu kılavuzda ele alınan kavramları kullanmanızı ve paketleri kendiniz yükleyip test ederek denemeler yapmanızı öneririz. Öğreniminizi pekiştirmek için ayrıca Node.js uygulamaları derlemeyi ve bağımlılıkları yapılandırmayı da deneyebilirsiniz.

Ayrıca, Node.js ve Javascript konuları hakkında blogumuzda bulabileceğiniz birçok başka öğrenme materyali de vardır.:

Keyifli Kodlamalar!

author

Preslav Dobrev

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

Henüz yorum yapılmamış. İlk siz olun.