Qaramliklarni boshqarish (dependencies)
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.jsonfayli - Bog‘liqlik versiyalarini qayd etish uchun lock fayllar (
package-lock.jsonyokiyarn.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
- Ishlab chiqarishda aniq versiyalardan foydalaning: Kutilmagan yangilanishlarning oldini olish uchun tobeliklaringizni aniq versiyalarga mahkamlang.
- Doimiy ravishda bog‘liqliklarni yangilang: Xavfsizlik yamoqlari va yangi xususiyatlardan foydalanish uchun bog‘liqliklaringizni yangilab turing.
- O‘z bog‘liqliklaringizni tekshirib ko‘ring: Doimiy ravishda bog‘liqliklaringizda ma’lum zaifliklarni tekshiring.
- Qulflash faylidan foydalaning: Bloklash faylingizni har doim versiya boshqaruviga topshiring.
- Bog‘liklarni minimallashtiring: Faqat sizga kerak bo‘lgan paketlarni qo‘shing.
- Ko‘lamli paketlardan foydalaning: Ichki paketlar uchun nomlash ziddiyatlarining oldini olish uchun doiralardan foydalaning.
- 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!
