npm
npm nedir?
npm, Node Package Manager demektir. Isaac Schlueter onu 2010’da Node.js ile birlikte açtı. Paket başkasının yazdığı hazır koddur. package.json projenin adını ve paket listesini tutar. npm install o listeyi okur ve paketleri node_modules klasörüne koyar. package-lock.json kesin sürümü bağlar ki yarın başka makinede aynı kod gelsin. Yarn ve pnpm benzer iş görür, ama npm’in kendisi değildir.
npm ne için kullanılır?
npm kütüphaneyi projeye eklemek, betiği tek komutla çalıştırmak ve paketi başkasına vermek içindir.
- React ve başka kütüphaneyi kurmak
- Testi npm test ile açmak
- Projeyi başka bilgisayarda aynı paketlerle kurmak
- Kendi paketini kayda göndermek
npm ile ne yapılabilir?
npm ile paket eklersin, eskisini silersin ve package.json içindeki betiği çalıştırırsın. Sayfayı kendi çizmez ve sunucuyu kurmaz. Paketin içindeki kod senin projende çalışır. Tanımadığın paketi kurmak onun komutunu da çalıştırabilir.
npm öğrenmek zor mu?
Bir paket kurmak kolaydır. Zorluk sürüm ve izindedir. Paket başka paketi de getirir. Biri eskidiyse uyarı çıkar, ama proje hâlâ çalışabilir. package-lock dosyasını atmak yarın başka sürüm getirebilir. Kayıt anahtarını depoya koymamak gerekir.
Avantajları ve sınırları
Avantaj: kütüphane yeniden yazılmaz, liste bir dosyada durur, aynı kurulum başka makinede tekrarlanır. Sınır: node_modules büyür. Her küçük iş için paket gerekmez. npm, Node.js’in kendisi değildir.
Temel kavramlar
Paketin adı ve sürümü vardır. package.json listedir. node_modules indirilen dosyaların yeridir.
- dependencies projenin çalışması içindir
- devDependencies yalnız hazırlamak içindir
- scripts komutu kısa ada bağlar
- Kilit dosyası sürümü tutar
Kısa örnek
Bu satır React paketini projenin listesine ekler ve dosyaları indirir. React’i kendi yazmaz.
npm install react
Sık sorulan sorular
- npm ve Node.js aynı mı? Hayır. Node.js programı çalıştırır. npm paketi getirir.
- package.json paketin kendisi mi? Hayır. O, listedir. Paketin dosyası node_modules içindedir.
- Her paket güvenli mi? Hayır. Tanımadığın paket kendi komutunu çalıştırabilir.