Bosh sahifa Wiki npm

npm

npm (Node Package Manager) — Isaak Shlyuter tomonidan 2010-yilda yaratilgan, Node.js uchun standart paket menejeri. U dasturchilarga tashqi kutubxonalarni o’rnatish, versiyalarini boshqarish va o’z kodlarini boshqalar bilan ulashish imkonini beradi.

Node.js bilan birga yaratilishi

npm Node.js ekotizimi bilan bir vaqtda rivojlangan bo’lib, hozirda Node.js o’rnatilgan har qanday tizimda avtomatik mavjud bo’ladi. Vosita buyruq qatori interfeysi (npm install, npm run) va markazlashgan onlayn omborxona (npm registry) dan iborat ikki qismli tizim sifatida ishlaydi.

package.json va bog’liqliklar boshqaruvi

Har bir npm loyihasi package.json nomli fayl orqali tavsiflanadi, unda loyiha nomi, versiyasi va unga zarur bo’lgan barcha tashqi kutubxonalar (bog’liqliklar) ro’yxati saqlanadi. package-lock.json fayli esa har bir bog’liqlikning aniq versiyasini qayd etib, turli kompyuterlarda bir xil kutubxona versiyalari o’rnatilishini kafolatlaydi.

Dunyodagi eng katta paket omborxonasi

npm registry milliondan ortiq nashr etilgan paketga ega bo’lib, bu uni dasturiy ta’minot tarixidagi eng katta paket omborxonalaridan biriga aylantiradi. Bu ulkan ekotizim JavaScript dasturchilariga deyarli har qanday vazifa uchun tayyor kutubxona topish imkonini beradi.

Xavfsizlik muammolari

npm ekotizimining ulkan hajmi va chuqur bog’liqliklar zanjiri (bir paket o’nlab boshqa paketlarga bog’liq bo’lishi mumkin) ta’minot zanjiri (supply chain) hujumlari uchun qulay muhit yaratadi — zararli kod mashhur paketning kichik, kam e’tibor qaratiladigan bog’liqligi orqali tarqalishi mumkin. Shu sababli npm audit kabi vositalar ma’lum zaifliklarni avtomatik tekshirish uchun qo’shilgan.

Yarn va pnpm bilan raqobat

2016-yilda Facebook tomonidan taqdim etilgan Yarn va keyinchalik pnpm npm’ning dastlabki versiyalaridagi tezlik va barqarorlik muammolariga muqobil sifatida paydo bo’lgan. Bu raqobat npm’ning o’zini ham takomillashtirishga undadi — zamonaviy npm versiyalari dastlabki versiyalarga qaraganda ancha tez va ishonchli hisoblanadi.

Bog’liq tushunchalar

Node.js, package.json, Yarn, pnpm, JavaScript, Bog’liqlik, Ta’minot zanjiri xavfsizligi