npm: asoslar, React Native va Node.js uchun paket menejeri

Muallif: IT Sectr Nashr etilgan: 2026-02-13 O'qish vaqti: 10 daq

npm (Node Package Manager) — Node.js platformasi uchun standart paket menejeri, Node.js o'rnatish to'plamiga kiritilgan. npm JavaScript va TypeScript loyihalarining bog'liqliklarini boshqaradi: kutubxonalarni node_modules papkasiga o'rnatadi, paket versiyalarini yangilaydi, versiya konfliktlarini hal qiladi. package.json — metadata va bog'liqliklar ro'yxati bilan markaziy konfiguratsiya fayli. npm Registry — eng yirik paket reestri. Batafsil npm Registry da.

Asosiy ma'lumotlar

  • npm — Node.js uchun standart paket menejeri, 0.6.3 versiyasidan Node.js o'rnatish tarkibiga kiradi
  • package.json — bog'liqliklar, skriptlar va metadata bilan loyiha konfiguratsiya fayli
  • npm install — package.json dan bog'liqliklarni node_modules papkasiga o'rnatish uchun asosiy buyruq
  • package-lock.json — barcha muhitlarda takrorlanadigan o'rnatishlar uchun aniq versiyalarni fiksatsiya qilish fayli
  • npm ci — CI/CD uchun buyruq, paketlarni lock-faylga qat'iy rioya qilgan holda yangilamasdan o'rnatadi

npm nima — Node.js paket menejeri?

npm 2010-yilda Isaac Schlueter tomonidan Node.js bog'liqliklarini boshqarish uchun yaratilgan. 2014-yildan npm, Inc. kompaniyasi tomonidan boshqariladi, 2020-yilda Microsoft/GitHub tomonidan sotib olingan. Asbob ikki qismdan iborat: paketlarni o'rnatish va boshqarish uchun CLI (buyruq qatori) va barcha nashr etilgan modullarning markaziy ombori — Registry (registry.npmjs.org).

npm Registry — eng yirik paket reestri: 2 milliondan ortiq paket va oyiga 10 milliarddan ortiq yuklab olishlar. Har bir paket SemVer versiyasi, tavsifi, bog'liqliklari, litsenziyasi va muallifligiga ega. O'z paketingizni nashr qilish npm publish orqali amalga oshiriladi. npm tashkilotlar uchun scoped paketlarni (@scope/package), xususiy reestrlarni va ichki xavfsizlik auditini qo'llab-quvvatlaydi.

Node.js 18+ versiyasi yaxshilangan unumdorlik, monorepolarlar uchun workspaces va qayta ishlangan peer dependencies mexanizmi bilan npm 9+ ni o'z ichiga oladi. npm ekotizimi server tomoni JavaScript, frontend (React, Vue, Angular), mobil rivojlanish (React Native), qurish vositalari (Webpack, Vite) va CLI yordamchi dasturlarini qamrab oladi. npm JavaScript kutubxonalarining asosiy tarqatish kanalidir.

npm-ning asosiy imkoniyatlari

npm install — barcha bog'liqliklarni node_modules ga o'rnatish uchun package.json va package-lock.json ni o'qiydigan asosiy buyruq. Birinchi ishga tushirishda npm bog'liqlik grafigini hisoblab chiqadi, versiya konfliktlarini hal qiladi va package-lock.json yaratadi. npm install <package> buyrug'i ma'lum bir paketni o'rnatadi; --save-dev bayrog'i devDependencies ga, --global esa globalga qo'shadi.

npx — npm 5.2 versiyasidan kiritilgan paket ijrochisi. npx CLI vositalarini global o'rnatmasdan ishga tushirish imkonini beradi: npx react-native init yoki npx create-react-app my-app. npx paketni vaqtinchalik keshga yuklab oladi, ishga tushiradi va tugagach tozalaydi. npx shuningdek vositalarning ma'lum versiyalarini ishga tushirish uchun foydali.

npm audit bog'liqlik daraxtini npm ma'lumotlar bazasidagi ma'lum zaifliklar uchun skanerlaydi. Buyruq kritiklik darajalari (critical, high, moderate) bilan hisobot beradi va zaif paketlarni avtomatik yangilash uchun npm audit fix ni tavsiya qiladi. npm cache yuklab olingan paketlarni lokal saqlaydi. npm cache clean --force o'rnatish muammolarida keshni tozalaydi. npm outdated eskirgan paketlarni ko'rsatadi.

bash
# npm-ning asosiy buyruqlari
$ npm install
$ npm install react-native-webview --save
$ npm install typescript --save-dev
# Global o'rnatmasdan ishga tushirish
$ npx react-native init MyApp
# Xavfsizlik auditi
$ npm audit --fix

package.json tuzilmasi va bog'liqliklarni boshqarish

package.json — loyihaning ildizidagi metadata, bog'liqliklar va konfiguratsiyani tavsiflovchi JSON fayli. Majburiy maydonlar: name (paketning noyob nomi) va version (SemVer versiyasi, mas. 1.0.0). Fayl tezkor inisializatsiya uchun npm init -y buyrug'i yoki qo'lda yaratiladi.

Semantic Versioning (SemVer) — MAJOR.MINOR.PATCH versiyalash standarti. Asosiy versiya API dagi mos kelmaydigan o'zgarishlarda, kichik versiya — funksionallik qo'shilganda (orqaga mos), yamoq — xatolar tuzatilganda o'zgaradi. ^ belgisi kichik va yamoq versiyalarini yangilashga, ~ esa faqat yamoq versiyasiga ruxsat beradi.

json
{
  "name": "my-app",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios"
  },
  "dependencies": {
    "react": "^18.3.0",
    "react-native": "^0.76.0"
  },
  "devDependencies": {
    "typescript": "^5.5.0",
    "@types/react": "^18.3.0"
  }
}
MaydonMaqsadMisol qiymati
scriptsnpm run uchun ishga tushirish buyruqlari"start": "node index.js"
dependenciesIlovaning ishlab chiqarish bog'liqliklari"react": "^18.3.0"
devDependenciesRivojlanish va test vositalari"jest": "^29.7.0"
peerDependenciesKutubxonalar uchun host bog'liqliklari"react": ">=17.0.0"
enginesNode.js versiyasiga talablar{"node": ">=18.0.0"}

React Native rivojlanishida npm

React Native loyihalari bog'liqliklarni boshqarish uchun npm-dan faol foydalanadi. Standart to'plamga react, react-native, navigatsiya kutubxonalari (React Navigation), HTTP so'rovlari (axios), holat boshqaruvi (Redux, Zustand) va UI komponentlari kiradi. npm reestrdan minglab mos paketlarni o'rnatish imkonini beradi.

npx pod-install — iOS uchun React Native da mahalliy modullarni o'rnatgandan so'ng majburiy buyruq. npm package-lock.json asosida Podfile.lock ni avtomatik yaratadi. Expo loyihalarida npm install o'rniga expo install ishlatiladi, chunki u joriy Expo SDK versiyasiga mos versiyalarni tanlaydi.

Versiya konfliktlari — React Native da tez-tez uchraydigan muammo: react-native-reanimated, react-native-gesture-handler va react-native-safe-area-context mos versiyalarni talab qiladi. Yechim — barcha paketlarni eng so'nggi mos versiyalarga yangilash yoki --legacy-peer-deps dan foydalanish. package-lock.json CocoaPods va Gradle orqali kompilyatsiya qilinadigan mahalliy modullar uchun muhimdir.

npm-ni muqobil menejerlar bilan solishtirish

npm — Node.js ga kiritilgan standart paket menejeri. Asosiy muqobillar: yarn (2016 yilda Facebook tomonidan yaratilgan) va pnpm (tez, qattiq havolalar bilan). npm 5 dan boshlab npm va yarn o'rtasidagi tezlik va funksionallik farqi minimal. npm 7+ workspaces qo'shdi, bu uni monorepolarlar uchun raqobatbardosh qiladi.

Xususiyatnpmyarnpnpm
Yaratilgan yil201020162017
Lock-faylpackage-lock.jsonyarn.lockpnpm-lock.yaml
O'rnatishKetma-ket (npm 5+)ParallelParallel
Disk maydoniStandartStandartMinimal (havolalar)
WorkspacesHa (npm 7+)HaHa
Plug'n'PlayYo'qHaYo'q

State of JS 2025 ma'lumotlariga ko'ra: npm dan 62% dasturchilar foydalanadi, yarn — 35% (asosan eski loyihalar va PnP muxlislari), pnpm — 3%. React Native loyihalari uchun ikkala vosita teng, ammo npm Expo SDK 50+ va yangi React Native inisializatsiyalarida ko'proq uchraydi.

yarn workspaces va Plug'n'Play ning yanada yetuk amalga oshirilishi tufayli juda katta monorepolarlarda (100+ paket) ustunlikni saqlaydi. pnpm global omborga qattiq havolalar hisobiga disk maydonini tejashda g'alaba qozonadi. Menejer tanlash jamoa afzalliklari va infratuzilmasiga bog'liq.

Tez-tez beriladigan savollar

npm install va npm ci o'rtasidagi farq nima?

npm install package-lock.json ni yangilaydi va semantik diapazon doirasida yangi kichik versiyalarni o'rnatishi mumkin. npm ci (Clean Install) node_modules ni o'chiradi va paketlarni package-lock.json ga qat'iy rioya qilgan holda yangilamasdan o'rnatadi. npm ci tezroq, CI/CD da ishlatiladi va barcha mashinalarda bir xil muhitni kafolatlaydi. Agar package-lock.json bo'lmasa, npm ci xatolik qaytaradi.

npm da peer dependencies konfliktlarini qanday tuzatish mumkin?

npm 7 dan boshlab peer dependencies konfliktlari qurish xatosiga sabab bo'ladi. Yechimlar: barcha paketlarni mos versiyalarga npm update orqali yangilash, npm 6 rejimi uchun --legacy-peer-deps bayrog'idan foydalanish yoki ma'lum bir paketning versiyasini majburiy fiksatsiya qilish uchun package.json ga overrides bo'limini qo'shish. Eng yaxshi variant — bog'liqliklarni mos versiyalarga yangilash.

npm audit nima va u nima uchun kerak?

npm audit bog'liqlik daraxtini npm Security Advisory bazasidagi ma'lum zaifliklar uchun skanerlaydi. Buyruq kritiklik darajasi (critical, high, moderate, low) bilan hisobot beradi va zaif paketlarni xavfsiz versiyalarga avtomatik yangilash uchun npm audit fix ni tavsiya qiladi. Muntazam npm audit ishga tushirish — JavaScript loyihalarining asosiy xavfsizlik amaliyotidir.

npm workspaces monorepolarlarni qanday soddalashtiradi?

npm workspaces bir repozitoriyda bir nechta paketlarni boshqarish imkonini beradi. Ildiz package.json ga "workspaces": ["packages/*"] maydonini qo'shing. Afzalliklari: barcha bog'liqliklarning umumiy node_modules ga yagona o'rnatilishi, mahalliy paketlar o'rtasida avtomatik simlinklar, barcha paketlar uchun skriptlarni ildizdan ishga tushirish, versiyalarning takrorlanishini bartaraf etish.

Nega package-lock.json repozitoriyga qo'shilishi kerak?

package-lock.json barcha bog'liqliklarning va ularning tranzitiv paketlarining aniq versiyalarini fiksatsiya qiladi. Usiz turli dasturchilar va CI serverlari semantik diapazon doirasida turli xil kutubxona versiyalarini olishlari mumkin, bu esa «mening mashinamda ishlaydi» xatolariga olib keladi. Lock-faylni commit qilish takrorlanadigan qurilishlarni va barcha muhitlarda bir xil harakatni kafolatlaydi.

Xulosa

  • npm — Node.js uchun standart paket menejeri, 0.6.3 versiyasidan Node.js o'rnatish tarkibiga kiradi
  • package.json — bog'liqliklar, skriptlar va metadata bilan loyiha konfiguratsiya fayli
  • npm install — bog'liqliklarni o'rnatish, npm ci — CI/CD uchun package-lock.json fiksatsiyasi
  • package-lock.json — aniq versiyalarni fiksatsiya qilish, takrorlanadigan qurilish uchun majburiy
  • npm Registry — 2 milliondan ortiq modul bilan eng yirik paket reestri
  • npm audit — bog'liqliklarning xavfsizlik tekshiruvi va zaifliklarni avtomatik tuzatish
  • npm workspaces — umumiy node_modules bilan monorepolarlarni boshqarish mexanizmi

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing