Qaramliklarni boshqarish (dependencies)


ULASHISH

Qaramlikni boshqarish nima?

Bog‘liqliklarni boshqarish - bu ilovangiz tayanadigan tashqi paketlarni kuzatish, o‘rnatish, yangilash va o‘chirish jarayoni.

Bu sizning ilovalaringiz barqaror, xavfsiz va vaqt o‘tishi bilan ta’minlanishiga yordam beradi.

npm (Node Package Manager) Node.js uchun standart paket menejeri hisoblanadi, ammo Yarn va pnpm kabi muqobillari ham mashhur.

Node.js qaramlik boshqaruvining asosiy komponentlari quyidagilardan iborat:

  • Bog‘liklarni e’lon qilish uchun package.json fayli
  • Bog‘liqlik versiyalarini qayd etish uchun lock fayllar (package-lock.json yoki yarn.lock)
  • Paketlarni o‘rnatish, yangilash va o‘chirish uchun paket menejeri buyruqlari
  • Zaifliklarni aniqlash va tuzatish uchun xavfsizlik vositalari

Semantik versiyani tushunish

Node.js paketlari uch qismli versiya raqamidan foydalangan holda semantik versiyaga (SemVer) amal qiladi: MAJOR.MINOR.PATCH

  • MAJOR: Mos kelmaydigan API o‘zgarishlari uchun oshirilgan
  • MINOR: Orqaga mos keladigan yangi xususiyatlar uchun oshirildi
  • PATCH: orqaga qarab mos keladigan xatolarni tuzatish uchun oshirildi

package.json da versiya talablari maxsus belgilar yordamida belgilanishi mumkin:

Belgi Misol Ma’nosi
^ ^2.8.1 2.x.x ko‘rinishidagi istalgan versiya, faqat MAJOR versiya mos kelishi kerak (2.8.1 yoki undan yuqori)
~ ~2.8.1 2.8.x ko‘rinishidagi istalgan versiya, faqat MAJOR.MINOR mos kelishi kerak (2.8.1 yoki undan yuqori)
* * Istalgan versiya (production uchun tavsiya etilmaydi)
>= >=2.8.1 2.8.1 yoki undan yuqori versiya
none 2.8.1 Faqat aniq versiya

Misol: Turli versiya spetsifikatsiyalari

{
  "dependencies": {
    "express": "^2.8.1", // Any 2.x.x version (2.8.1 or higher)
    "lodash": "~2.8.1", // Any 2.8.x version (2.8.1 or higher)
    "moment": "2.8.1", // Exactly version 2.8.1
    "axios": ">=2.8.1", // Version 2.8.1 or any higher version
    "debug": "2.x" // Any version starting with 2
  }
}


Bog‘liqliklarni o‘rnatish

Node.js loyihasida bog‘liqliklarni o‘rnatishning bir necha yo‘li mavjud:

Barcha bog‘liqliklarni o‘rnatish

npm install

Bu buyruq package.json faylini o‘qiydi va u yerda ko‘rsatilgan barcha bog‘liqliklarni o‘rnatadi.

Muayyan paketni o‘rnatish

npm install express

Bu paketning eng so‘nggi versiyasini o‘rnatadi va uni package.json da bog‘liqliklaringizga qo‘shadi.

Muayyan versiyani o‘rnatish

npm install express@4.17.1

package.json ga saqlamasdan o‘rnatish

npm install express --no-save

Global o‘rnatish

npm install -g nodemon

Global paketlar loyihaning node_modules katalogiga emas, balki butun tizim bo‘ylab o‘rnatiladi.


Bog‘liqlik turlari

Node.js loyihalari bir necha turdagi bog‘liqlikka ega bo‘lishi mumkin, ularning har biri boshqa maqsadga xizmat qiladi:

Doimiy bog‘liqliklar

npm install express --save # or simply npm install express

Bular ilovangiz ishlab chiqarishda ishlashi uchun zarur bo‘lgan paketlardir.

Rivojlanishga bog‘liqliklar

npm install jest --save-dev # or npm install jest -D

Bular faqat mahalliy ishlab chiqish va sinov uchun zarur bo‘lgan paketlar, masalan, test ramkalari yoki qurish vositalari.

Tengdoshlarga bog‘liqlik

package.json da boshqa paketlar bilan mosligini ko‘rsatish uchun ularni amalda qo‘shmasdan ko‘rsatilgan:

{
  "name": "my-plugin",
  "version": "1.0.0",
  "peerDependencies": {
    "react": "^17.0.0"
  }
}

Bu foydalanuvchilarga sizning paketingiz React 17.x o‘z loyihasida o‘rnatilishini kutishini bildiradi.

Ixtiyoriy bog‘liqliklar

npm install fancy-feature --save-optional
# or
npm install fancy-feature -O

Bu paketlar funksionallikni yaxshilaydi, lekin asosiy dastur ishlashi uchun shart emas.

Maslahat: Ishlab chiqarishda zarur bo‘lgan paketlar uchun dependencies va faqat ishlab chiqish yoki sinov paytida zarur bo‘lgan paketlar uchun devDependencies dan foydalaning.


Paket blokirovkasi fayllari

Bloklash fayllari har bir paketning aniq versiyasini va uning bog‘liqligini yozib olish orqali turli muhitlarda izchil o‘rnatishni ta’minlaydi.

package-lock.json (npm)

Bu fayl npm node_modules daraxtini yoki package.json ni o‘zgartirganda avtomatik ravishda hosil bo‘ladi.

{
  "name": "my-app",
  "version": "1.0.0",
  "lockfileVersion": 3,
  "requires": true,
  "packages": {
    "node_modules/express": {
      "version": "4.18.2",
      "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
      "dependencies": {
        "accepts": "~1.3.8",
        "array-flatten": "1.1.1"
      }
    }
  }
}

yarn.lock (Yarn)

Ipning qulflash fayli xuddi shunday maqsadga xizmat qiladi, lekin boshqa formatga ega.

Muhim: Jamoangiz va joylashtirish (deployment) muhitlari bo‘ylab bir xil o‘rnatishni ta’minlash uchun lock fayllarni har doim versiyalarni boshqarish tizimiga commit qiling.


Bog‘liqlarni yangilash

Eskirgan paketlarni tekshiring

npm outdated

Muayyan paketni yangilang

npm update express

Barcha paketlarni yangilang

npm update

Npm-ni o‘zi yangilang

npm install -g npm@latest

npm-check-updates-dan foydalanish

Yangilanishlarni ko‘proq nazorat qilish uchun siz npm-check-updates to‘plamidan foydalanishingiz mumkin:

# Install npm-check-updates globally
npm install -g npm-check-updates

# Check for updates
ncu

# Update package.json
ncu -u

# Install updated packages
npm install

Xavfsizlik va audit

O‘zingizning bog‘liqliklaringizni tekshiring

npm audit

Xavfsizlik zaifliklarini tuzatish

npm audit fix

Barcha muammolarni majburan tuzatish (ehtiyotkorlik bilan foydalaning)

npm audit fix --force

Ma’lum zaifliklarni tekshiring

npm audit

# Or using npx with the 'audit' package
npx audit

Eng yaxshi amaliyotlar

  1. Ishlab chiqarishda aniq versiyalardan foydalaning: Kutilmagan yangilanishlarning oldini olish uchun tobeliklaringizni aniq versiyalarga mahkamlang.
  2. Doimiy ravishda bog‘liqliklarni yangilang: Xavfsizlik yamoqlari va yangi xususiyatlardan foydalanish uchun bog‘liqliklaringizni yangilab turing.
  3. O‘z bog‘liqliklaringizni tekshirib ko‘ring: Doimiy ravishda bog‘liqliklaringizda ma’lum zaifliklarni tekshiring.
  4. Qulflash faylidan foydalaning: Bloklash faylingizni har doim versiya boshqaruviga topshiring.
  5. Bog‘liklarni minimallashtiring: Faqat sizga kerak bo‘lgan paketlarni qo‘shing.
  6. Ko‘lamli paketlardan foydalaning: Ichki paketlar uchun nomlash ziddiyatlarining oldini olish uchun doiralardan foydalaning.
  7. O‘zingizning bog‘liqliklaringizni hujjatlashtiring: Har bir bog‘liqlik nima uchun kerakligi haqidagi ma’lumotni loyihangiz hujjatlariga kiriting.

Umumiy muammolarni bartaraf etish

Npm keshini tozalash

npm cache clean --force

node_modules ni o‘chirish va qayta o‘rnatish

rm -rf node_modules
rm package-lock.json
npm install

Tengdoshlarga qaramlik muammolarini tekshirish

npm ls

Buzilgan bog‘liqliklarni tuzatish

npm rebuild

Xulosa

Sog‘lom Node.js loyihasini saqlab qolish uchun qaramlikni samarali boshqarish juda muhimdir.

Bog‘liqliklaringizni qanday qilib to‘g‘ri o‘rnatish, yangilash va boshqarishni tushunib, ilovangiz vaqt o‘tishi bilan barqaror, xavfsiz va qo‘llab-quvvatlashga qulay bo‘lib qolishini ta’minlashingiz mumkin.

O‘zingizning bog‘liqliklaringizni xavfsizlik zaifliklari uchun muntazam ravishda tekshirishni unutmang va eng so‘nggi xususiyatlar va xavfsizlik tuzatishlaridan foydalanish uchun ularni yangilab turing.




W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!