IlmHamroh
JavaScript Full-stack/16-qism. Frontend asboblari: npm, bundlerlar, config3/48-dars25 daqiqa
Mundarija (39)

npm buyruqlari chuqur: npm ls, outdated, view, cache va doctor

Qisqacha: Loyihada nima o'rnatilganini npm ls daraxt shaklida ko'rsatadi. Qaysi paketning yangi versiyasi chiqqanini npm outdated aytadi. Paketni o'rnatmasdan registrdan ma'lumot (versiya, litsenziya, bog'liqliklar) — npm view. Yuklangan fayllar ombori — npm cache, npm muhitining ko'rigi (registr, Node, git, PATH) — npm doctor.

Bu darsda

  • npm install ning foydali bayroqlarini ishlatasiz: @versiya, @teg, -E, --no-save, -g.
  • npm ls daraxtini o'qiysiz va "bu paket qayerdan keldi?" savoliga javob topasiz.
  • npm outdated jadvalidagi Current, Wanted va Latest ustunlarini farqlaysiz.
  • npm view bilan paketni o'rnatmasdan tekshirasiz.
  • npm keshi nima ekanini bilasiz va npm doctor hisobotini o'qiysiz.

Oldin bilishingiz kerak: npm'ga birinchi qadam, Exit code va buyruqlarni zanjirlash, Node versiya menejerlari.

1. Nega bu kerak?

Sardor «Bahor» oshxonasida stajyor dasturchi. Jasur aka undan so'radi: "vazifalar da nechta paket bor? ESLint'ning qaysi versiyasi? Eskirganlari bormi?"

Sardor node_modules ni ochdi — ichida yuzdan ortiq papka. Qaysi biri qayerdan kelgan — bilib bo'lmaydi.

npm'ga birinchi qadam darsida npm'ning ish buyruqlarini o'rgangansiz: init, install, uninstall, run. Bugun — "savol-javob" buyruqlari. Har biri bitta savolga javob beradi:

Savol Buyruq
Loyihada nima o'rnatilgan? npm ls
Bu paket qayerdan keldi? npm ls <nom>, npm explain <nom>
Qaysi paket eskirgan? npm outdated
Paket haqida ma'lumot (o'rnatmasdan)? npm view <nom>
Yuklangan fayllar qayerda? npm cache
npm'ning o'zi sog'mi? npm doctor

Har buyruq ma'lumotni boshqa joydan oladi. Sxemadagi o'qlar "qayerga qaraydi" degani:

flowchart LR
  ls["npm ls"] --> NM["node_modules<br/>(diskda)"]
  ls --> PJ["package.json<br/>va lock"]
  out["npm outdated"] --> NM
  out --> REG["registr<br/>npmjs.com"]
  view["npm view"] --> REG
  cache["npm cache"] --> C["kesh papkasi"]
  doc["npm doctor"] --> REG
  doc --> ENV["Node, git, PATH"]

npm ls internetga chiqmaydi: diskdagi papkani package.json bilan solishtiradi. npm view aksincha — faqat registrdan so'raydi. npm outdated esa ikkalasini taqqoslaydi.

Maslahat: Darsdagi hamma chiqish 2026-10-07 da Windows 11, Node 24.21.0 va npm 11.19.0 bilan haqiqatan olingan. Loyihalar D:\kurs\ da; sinov uchun npm keshi va global papka ham shu yerga ko'chirilgan. Sizda yo'llar, vaqt (in 1s) va ba'zi versiyalar boshqacha chiqadi — bu normal.

2. O'rnatish: foydali bayroqlar

2.1 Mashq loyihasi

kurs/mashqlar/16/03-npm-buyruqlari/ papkasini yarating. Unda npm init -y, keyin TypeScript'ni o'rnatish darsidagidek npm pkg set type=module qiling.

Endi ataylab eski versiyalarni o'rnatamiz — go'yo loyiha ikki yil oldin yozilgan. nanoid — tasodifiy ID (masalan, buyurtma raqami) yasaydigan kichik paket:

bash
npm i picocolors@1.0.0 nanoid@3.3.4
text

added 2 packages, and audited 3 packages in 996ms

1 high severity vulnerability

To address all issues, run:
  npm audit fix

Run `npm audit` for details.

@1.0.0 — "aynan shu versiyani ol". 1 high severity vulnerability — "1 ta jiddiy zaiflik": eski nanoid 3.3.4 da xavfsizlik teshigi topilgan, keyingi versiyalarda yamalgan. Eski versiya xavfli bo'lishi mumkin. npm audit — Ta'minot zanjiri xavfsizligi darsida, bugun esa eskirganini topishni o'rganamiz.

Dasturchi asbobi ham kerak:

bash
npm i -D prettier@3.0.0
text

added 1 package, and audited 4 packages in 1s

1 package is looking for funding
  run `npm fund` for details

1 high severity vulnerability

To address all issues, run:
  npm audit fix

Run `npm audit` for details.

looking for funding — "1 ta paket muallifi moddiy yordam so'ramoqda". Xato emas. Bu yozuv qayerdan kelishini keyingi darsda ko'ramiz.

2.2 package.json ga nima yozildi

npm pkg get — package.json ning bo'limini faylni ochmasdan chiqaradi:

bash
npm pkg get dependencies devDependencies
text
{
  "dependencies": {
    "nanoid": "^3.3.4",
    "picocolors": "^1.0.0"
  },
  "devDependencies": {
    "prettier": "^3.0.0"
  }
}

Biz @1.0.0 deb aniq versiya so'radik, npm esa ^1.0.0 yozdi. Ya'ni keyingi o'rnatishda 1.x ning yangisi tushishi mumkin. Belgisiz, qat'iy versiya kerak bo'lsa — -E (--save-exact). vazifalar dagi hamma versiya shunday o'rnatilgan.

Buyruq Nima o'rnatiladi package.json ga
npm i nanoid eng yangi versiya "^6.0.2"
npm i nanoid@3.3.4 aynan 3.3.4 "^3.3.4"
npm i -E nanoid@3.3.4 aynan 3.3.4 "3.3.4"
npm i nanoid --no-save eng yangi versiya hech narsa

--no-save paketni faqat node_modules ga qo'yadi. Tez sinash uchun qulay, lekin bunday paket keyingi npm install da jimgina o'chib ketadi — buni «Daraxt buzilganda» bo'limida ko'rasiz.

Olib tashlash — npm uninstall (qisqasi npm un yoki npm rm):

bash
npm uninstall nanoid
text

removed 1 package, and audited 3 packages in 862ms

1 package is looking for funding
  run `npm fund` for details

found 0 vulnerabilities

Zaiflik ham ketdi — u nanoid da edi. nanoid@3.3.4 ni qaytarib o'rnating, u bizga yana kerak.

2.3 Global o'rnatish: -g

Global o'rnatish (-g) paketni bitta loyihaga emas, butun kompyuter uchun umumiy papkaga qo'yadi. Uning buyrug'i istalgan papkadan ishlaydi. Papka qayerda?

bash
npm prefix -g
text
D:\kurs\npm-global
bash
npm root -g
text
D:\kurs\npm-global\node_modules

Windows o'rnatuvchisi bilan qo'yilgan Node'da bu odatda C:\Users\<ism>\AppData\Roaming\npm. nvm yoki fnm bilan — har Node versiyasining o'z papkasida (Node versiya menejerlari). Global o'rnatilganlar ro'yxati:

bash
npm ls -g
text
D:\kurs\npm-global
`-- (empty)

Bo'sh — va shunday qolgani yaxshi. Global paket hamma loyihaga bitta versiya beradi, Node versiyasi almashganda yo'qoladi va jamoadoshingizga npm install bilan kelmaydi. Shuning uchun loyiha asboblari -D bilan o'rnatiladi va npx yoki scripts orqali ishlatiladi — TypeScript'ni o'rnatish darsidagi npx tsc kabi.

Tekshirib ko'ring: npm i -E picocolors@latest package.json ga nima yozadi? (2026-10 holatiga eng yangi versiya — 1.1.1.)

Javob

"picocolors": "1.1.1" — belgisiz. @latest "eng yangisini ol" deydi, -E esa "aniq versiyani ^ siz yoz" deydi. Biz sinadik: npm aynan "1.1.1" yozdi.

3. npm ls: o'rnatilganlar daraxti

3.1 Yuqori daraja

Sardor'ning savoliga qaytamiz. kurs/vazifalar da:

bash
npm ls
text
vazifalar@ D:\kurs\vazifalar
+-- @eslint/js@10.0.1
+-- @typescript/native@npm:typescript@7.0.2
+-- eslint@10.12.0
+-- globals@17.13.0
+-- prettier@3.9.9
+-- typescript-eslint@8.71.1
+-- typescript@npm:@typescript/typescript6@6.0.2
`-- web-vitals@6.2.3
  • vazifalar@ D:\kurs\vazifalar — nom, @ dan keyin versiya, keyin papka. Versiya bo'sh: package.json da version maydoni yo'q. Nega — keyingi darsda.
  • **+-- va `--** — daraxt shoxlari; oxirgisi `-- bilan yopiladi.
  • nom@versiya — diskda haqiqatan turgan versiya, package.json dagi yozuv emas.
  • @typescript/native@npm:typescript@7.0.2 — taxallus: papka nomi bir, ichidagi paket boshqa. Bu 15-qismdagi ikki TypeScript.

Sukut bo'yicha npm ls faqat birinchi qavatni — package.json dagi 8 ta paketni ko'rsatadi.

Maslahat: Sizda shoxlar ├── va └── bo'lib chiqishi mumkin — terminalga bog'liq. npm ls --unicode ularni majburan shunday chizadi.

3.2 Butun daraxt: --all

8 ta paketning ham o'z bog'liqliklari bor. Hammasi — npm ls --all (vazifalar da 196 qator). Boshi:

bash
npm ls --all
text
vazifalar@ D:\kurs\vazifalar
+-- @eslint/js@10.0.1
| `-- eslint@10.12.0 deduped
+-- @typescript/native@npm:typescript@7.0.2
| +-- UNMET OPTIONAL DEPENDENCY @typescript/typescript-aix-ppc64@7.0.2
| +-- UNMET OPTIONAL DEPENDENCY @typescript/typescript-darwin-arm64@7.0.2
…
| +-- UNMET OPTIONAL DEPENDENCY @typescript/typescript-win32-arm64@7.0.2
| `-- @typescript/typescript-win32-x64@7.0.2
+-- eslint@10.12.0
| +-- @eslint-community/eslint-utils@4.10.1
| | +-- eslint-visitor-keys@3.4.3
| | `-- eslint@10.12.0 deduped
…

… — biz qisqartirgan joylar. Ikki yangi so'z:

  • deduped ("takrori olib tashlangan") — paket daraxtda boshqa joyda bor, npm uni ikkinchi marta yuklamagan.
  • UNMET OPTIONAL DEPENDENCY ("bajarilmagan ixtiyoriy bog'liqlik") — xato emas. TypeScript 7 har operatsion tizim uchun alohida yig'ilgan; npm faqat sizga mosini (win32-x64) o'rnatdi.

Chuqurlikni cheklash ham mumkin: npm ls --depth=1 — ikkinchi qavatgacha. Raqamlar:

vazifalar: siz tanlagan va ular olib kelgan paketlar
  • Hozir: package.json da8 ta
  • Hozir: jami o'rnatilgan102 ta
  • 16-qism oxirida: package.json da16 ta
  • 16-qism oxirida: jami220 ta

Manba: O'lchov: npm ls va npm ci, Node 24.21.0, npm 11.19.0, 2026-10-07 (16-qism boshi va oxiridagi vazifalar)

Siz 8 ta paket tanladingiz — npm 102 ta o'rnatdi. Qism oxirida 16 ta tanlov 220 ta paketga aylanadi.

3.3 "Bu paket qayerdan keldi?"

vazifalar ning node_modules ida ms papkasi bor. Siz uni o'rnatmagansiz. Kim olib keldi?

bash
npm ls ms --unicode
text
vazifalar@ D:\kurs\vazifalar
└─┬ eslint@10.12.0
  └─┬ debug@4.4.3
    └── ms@2.1.3

Zanjir: siz eslint ni o'rnatdingiz → u debug ni kutadi → debug esa ms ni. ms da muammo chiqsa, endi qaysi paketni yangilash kerakligini bilasiz.

Batafsilroq javob — npm explain (qisqasi npm why), u versiya chegaralarini ham ko'rsatadi. Mashq loyihasida:

bash
npm explain picocolors
text
picocolors@1.0.0
node_modules/picocolors
  picocolors@"^1.0.0" from the root project

"picocolors 1.0.0, node_modules/picocolors da. Uni loyihaning o'zi (root project) ^1.0.0 chegarasi bilan so'ragan". vazifalar da npm explain ms esa 239 qator: debug ni ko'p paket kutadi va npm har yo'lni yozadi. Shuning uchun avval npm ls nom, kerak bo'lsa — npm explain.

--omit=dev dasturchi asboblarini yashiradi:

bash
npm ls --omit=dev
text
vazifalar@ D:\kurs\vazifalar
`-- (empty)

Bo'sh! Lekin web-vitals foydalanuvchining brauzerida ishlaydi-ku. Nega u "dasturchi asbobi" qatorida? Bu savolga bog'liqlik turlari darsida javob beramiz. vazifalar ni esa Bundler nima darsida tuzatamiz — o'shanda web-vitals dependencies ga o'tadi.

3.4 Daraxt buzilganda

npm ls faqat ko'rsatmaydi — u tekshiradi ham. Mashq loyihasida ataylab uchta narsani buzdik:

  1. npm i ms --no-save — package.json ga yozilmagan paket qo'shildi.
  2. node_modules/picocolors qo'lda o'chirildi (branch almashtirganda shunday bo'ladi).
  3. package.json da nanoid qo'lda ^5.0.0 qilindi, lekin npm install unutildi.
bash
npm ls
text
03-npm-buyruqlari@1.0.0 D:\kurs\mashqlar\16\03-npm-buyruqlari
+-- ms@2.1.3 extraneous
+-- nanoid@3.3.4 invalid: "^5.0.0" from the root project
+-- UNMET DEPENDENCY picocolors@^1.0.0
`-- prettier@3.0.0

npm error code ELSPROBLEMS
npm error extraneous: ms@2.1.3 D:\kurs\mashqlar\16\03-npm-buyruqlari\node_modules\ms
npm error invalid: nanoid@3.3.4 D:\kurs\mashqlar\16\03-npm-buyruqlari\node_modules\nanoid
npm error missing: picocolors@^1.0.0, required by 03-npm-buyruqlari@1.0.0
npm error A complete log of this run can be found in: D:\kurs\npm-cache\_logs\2026-10-07T06_19_00_358Z-debug-0.log

ELSPROBLEMS — "ls problems": daraxtda muammo bor, chiqish kodi 1.

Belgi Ma'nosi Bizda
extraneous (ortiqcha) diskda bor, package.json da yo'q ms
invalid (yaroqsiz) bor, lekin versiya chegaraga mos emas nanoid 3.3.4, kerak ^5
missing (yetishmaydi) package.json da bor, diskda yo'q picocolors

Uchalasining davosi bitta — npm install:

bash
npm install
text

added 1 package, removed 1 package, changed 1 package, and audited 4 packages in 850ms

2 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

Har so'z bitta muammoga mos: added — picocolors qaytdi, removed — ms o'chdi, changed — nanoid 5.x ga almashdi. --no-save dagi ms jimgina ketdi.

Tajribadan keyin package.json va lock-faylni Git bilan qaytaring (git restore package.json package-lock.json) va npm ci qiling. U node_modules ni lock-fayldagi aniq versiyalar bilan qayta quradi (Lock-fayllar va npm ci darsida chuqur).

Tekshirib ko'ring: UNMET OPTIONAL DEPENDENCY va UNMET DEPENDENCY — qaysi biri muammo?

Javob

Faqat UNMET DEPENDENCY: kerakli paket yetishmayapti, npm ls 1 bilan tugaydi. UNMET OPTIONAL DEPENDENCY esa "ixtiyoriy paket o'rnatilmadi" degani — boshqa operatsion tizimlar uchun nusxalar. Masalan, vazifalar da npm ls --all 20 ta shunday qator chiqaradi, lekin chiqish kodi 0.

4. npm outdated: nima eskirgan?

4.1 Jadvalni o'qish

Mashq loyihasi asl holatida:

bash
npm outdated
text
Package     Current  Wanted  Latest  Location                 Depended by
nanoid        3.3.4  3.3.20   6.0.2  node_modules/nanoid      03-npm-buyruqlari
picocolors    1.0.0   1.1.1   1.1.1  node_modules/picocolors  03-npm-buyruqlari
prettier      3.0.0   3.9.9   3.9.9  node_modules/prettier    03-npm-buyruqlari
Ustun Ma'nosi
Current diskda hozir turgan versiya
Wanted package.json dagi chegaraga mos eng yangi versiya
Latest registrdagi latest tegi (odatda eng yangi barqaror)
Location, Depended by paket qayerda va uni kim so'ragan

Eng muhim farq — Wanted va Latest. nanoid ning ^3.3.4 chegarasi 3.x dan chiqmaydi: Wanted — 3.3.20, Latest esa 6.0.2. Orada ikki MAJOR versiya — eski kodni buzishi mumkin bo'lgan o'zgarishlar.

Rangli terminalda qatorlar bo'yalgan. Qizil — chegara ichida yangilash bor, xotirjam yangilang. Sariq — yangisi faqat chegaradan tashqarida (odatda yangi MAJOR), ehtiyot bo'ling.

vazifalar da esa npm outdated jim tugaydi — jadval umuman chiqmaydi, chiqish kodi 0. Bo'sh — 2026-10-07 holatiga hamma paket eng yangi. Qat'iy versiyada ("3.9.9") Wanted doim Current ga teng. Bunday paket jadvalga faqat registrda yangi Latest chiqqanda tushadi.

4.2 Chiqish kodi: 1

bash
npm outdated; echo $?
text
Package     Current  Wanted  Latest  Location                 Depended by
nanoid        3.3.4  3.3.20   6.0.2  node_modules/nanoid      03-npm-buyruqlari
picocolors    1.0.0   1.1.1   1.1.1  node_modules/picocolors  03-npm-buyruqlari
prettier      3.0.0   3.9.9   3.9.9  node_modules/prettier    03-npm-buyruqlari
1

Eskirgan paket bo'lsa, npm outdated 1 bilan tugaydi — xuddi xato kabi. Exit code darsidagi && zanjiri shu yerda to'xtaydi:

bash
npm outdated && echo "Hammasi yangi"
text
Package     Current  Wanted  Latest  Location                 Depended by
nanoid        3.3.4  3.3.20   6.0.2  node_modules/nanoid      03-npm-buyruqlari
picocolors    1.0.0   1.1.1   1.1.1  node_modules/picocolors  03-npm-buyruqlari
prettier      3.0.0   3.9.9   3.9.9  node_modules/prettier    03-npm-buyruqlari

Hammasi yangi chiqmadi. CI'da bu foydali bo'lishi mumkin ("eskirgan bo'lsa — to'xta"). Lekin skriptga shunchaki ma'lumot uchun qo'ysangiz, zanjirni buzadi.

4.3 Wanted gacha: npm update

npm update hamma paketni Wanted gacha ko'taradi:

bash
npm update
text

changed 3 packages, and audited 4 packages in 2s

2 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

Zaiflik ham yo'qoldi: nanoid 3.3.20 da teshik yamalgan. Yana npm outdated:

bash
npm outdated
text
Package  Current  Wanted  Latest  Location             Depended by
nanoid    3.3.20  3.3.20   6.0.2  node_modules/nanoid  03-npm-buyruqlari

Faqat nanoid qoldi. 6.0.2 ga o'tish — MAJOR yangilash, npm update uni ataylab qilmaydi. Avval paketning o'zgarishlar ro'yxati (changelog) o'qiladi — Bog'liqliklarni yangilash strategiyasi darsida.

Diqqat: npm update dan keyin package.json o'zgarmaydi: "nanoid": "^3.3.4" shundayligicha qoladi. Yangi versiyalar faqat node_modules va lock-faylga yoziladi. 3.3.20 baribir ^3.3.4 ga mos.

Tekshirib ko'ring: "prettier": "3.9.9" (belgisiz) yozilgan loyihada Prettier 3.10.0 chiqdi. npm outdated ning Wanted ustunida nima bo'ladi?

Javob

3.9.9. Qat'iy versiya faqat bitta versiyaga ruxsat beradi, shuning uchun Wanted = Current, Latest esa 3.10.0. npm update bunday paketga tegmaydi — o'zingiz npm i -E prettier@3.10.0 qilasiz.

5. npm view: o'rnatmasdan tekshirish

5.1 Paket kartasi

npm view (qisqasi npm info) registrdan paketning "kartasini" olib keladi. Loyiha shart emas. Karta uzun — avval birinchi qatorga va dist-tags bo'limiga qarang, qolganini pastda birma-bir ochamiz:

bash
npm view vite
text

vite@8.3.3 | MIT | deps: 5 | versions: 759
Native-ESM powered web dev build tool
https://vite.dev

keywords: build-tool, dev-server, framework, frontend, hmr, vite

bin: vite

dist
.tarball: https://registry.npmjs.org/vite/-/vite-8.3.3.tgz
.shasum: 12651726ab1cca0a9e1e649e3cb4dca5b6b006a9
.integrity: sha512-cTAldKPImjg6c+gk48U19POPn3GCBzZwpdsN8ZMEEcbpes+6/wvfqUd0C2y3qYY4wsj8PwgFwrZ/1jBPVttMSg==
.unpackedSize: 2.4 MB

dependencies:
postcss: ^8.5.28, rolldown: ~1.2.11, picomatch: ^4.0.7, tinyglobby: ^0.2.17, lightningcss: ^1.33.0

maintainers:
…

dist-tags:
latest: 8.3.3
previous: 6.4.4
beta: 8.3.0-beta.1
alpha: 6.0.0-alpha.24

published yesterday by GitHub Actions <npm-oidc-no-reply@github.com>

maintainers ostidagi muallif nomlari va emaillarini biz qisqartirdik. Vite'ni Vite I darsida o'rnatamiz, hozir faqat kartasini o'qiymiz:

  • Birinchi qator — eng yangi versiya 8.3.3, litsenziya MIT, 5 ta bog'liqlik, jami 759 versiya.
  • bin — paket terminal buyrug'i ham beradi.
  • dist — arxiv (tarball), uning barmoq izi (.integrity) va ochilgandagi hajmi.
  • published yesterday — "kecha chiqarilgan"; siz o'qiyotgan kuni boshqacha yoziladi.

5.2 Bitta maydon

Bitta javob kerak bo'lsa — maydon nomini qo'shing:

bash
npm view vite version
text
8.3.3
bash
npm view vite@8.3.3 engines
text
{ node: '^20.19.0 || >=22.12.0' }

engines — paket qaysi Node'da ishlaydi. Node 24 bu chegaraga mos. Endi 15-qismdagi bir sirni ochamiz — nega vazifalar da ikkita TypeScript bor?

bash
npm view typescript-eslint@8.71.1 peerDependencies
text
{
  eslint: '^8.57.0 || ^9.0.0 || ^10.0.0',
  typescript: '>=4.8.4 <6.1.0'
}

typescript-eslint 8.71.1 faqat 6.1.0 dan kichik TypeScript bilan ishlaydi. TypeScript 7 bu chegaraga sig'maydi — shuning uchun ESLint uchun alohida TypeScript 6 turibdi. peerDependencies — bog'liqlik turlari darsida.

Buyruq Javob
npm view picocolors versions hamma versiyalar (9 ta)
npm view vite time.modified oxirgi o'zgarish vaqti
npm view prettier repository.url manba kodi joyi
npm view vite@8.3.3 dist.unpackedSize 2374102 (bayt)

Ichma-ich maydon nuqta bilan yoziladi: dist.unpackedSize — dist ichidagi unpackedSize.

5.3 Teglar

Teg (dist-tag) — versiyaga berilgan nom. Do'kondagi "yangi kelgan" yorlig'i kabi: yorliq bir mahsulotdan boshqasiga o'tkaziladi.

bash
npm view nanoid dist-tags
text
{ latest: '6.0.2', legacy: '3.3.20' }

latest — npm i nanoid da tushadigan versiya. legacy ("eski avlod") — muallif 3.x qatori uchun qoldirgan teg. Teg bilan o'rnatsa bo'ladi:

bash
npm i nanoid@legacy
text

up to date, audited 4 packages in 811ms

2 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

up to date — "hammasi joyida": diskda 3.3.20 allaqachon bor edi, uni npm update olib kelgan. Lekin package.json o'zgardi: endi "nanoid": "^3.3.20". Teg nomi emas, uning versiyasi yoziladi. Vite kartasidagi beta, alpha — sinov versiyalari. Ular latest ga tegmaydi, shuning uchun npm i vite sizga sinov versiyasini bermaydi.

5.4 Ikki xato — ikki saboq

bash
npm view vite@9 version
text
npm error code E404
npm error 404 No match found for version 9
npm error 404
npm error 404  The requested resource 'vite@9' could not be found or you do not have permission to access it.
npm error 404
npm error 404 Note that you can also install from a
npm error 404 tarball, folder, http url, or git url.
npm error A complete log of this run can be found in: D:\kurs\npm-cache\_logs\2026-10-07T06_03_02_424Z-debug-0.log

"9 versiyaga mos narsa topilmadi" — Vite 9 hali chiqmagan.

Ikkinchi saboq — xato chiqmagan holat. vite o'rniga shoshib vitee yozdingiz:

bash
npm view vitee name version description license time.modified
text
name = 'vitee'
version = '1.0.4'
time.modified = '2022-07-21T20:00:05.657Z'

Xato yo'q — bunday paket haqiqatan bor! Lekin u Vite emas. Beshta maydondan uchtasi keldi: tavsif va litsenziya yo'q, 2022-yildan beri o'zgarmagan. npm'ga birinchi qadam darsidagi "o'xshash nom" hujumi shunday holatga tayanadi. Odat qiling: yangi nomni o'rnatishdan oldin kartasini ko'ring.

Tekshirib ko'ring: Malika "chalk ning 4-versiyalari registrda bormi?" deb so'radi. Bitta buyruq bilan qanday bilasiz?

Javob

npm view chalk@4 version — 4.x qatoridagi hamma versiyalarni chiqaradi. E404 chiqsa — yo'q. Chegara (@4, @^4.1.0) bilan so'rash npm view da ham, npm i da ham bir xil ishlaydi.

6. npm cache: yuklangan fayllar ombori

6.1 Kesh nima

«Bahor» oshxonasida guruch har kuni bozordan olinmaydi: bir marta qop bilan olinib, omborga qo'yiladi. npm ham shunday. Har yuklangan arxiv va paket kartasi kesh (cache) papkasiga saqlanadi, keyingi o'rnatish avval keshga qaraydi. Fayl barmoq izi (integrity) bo'yicha saqlanadi — buzilgani darhol seziladi.

bash
npm config get cache
text
D:\kurs\npm-cache

Bizda u sinov uchun ko'chirilgan. Sukut bo'yicha:

Tizim Kesh papkasi
Windows %LocalAppData%\npm-cache (C:\Users\<ism>\AppData\Local\npm-cache)
macOS, Linux ~/.npm

Ichida: _cacache (fayllar), _logs (xato jurnallari) va _npx (npx yuklaganlari). Har npm xatosi oxiridagi A complete log of this run can be found in: …\_logs\… qatori — shu papkadagi batafsil jurnal. Xatoni internetda so'raganda aynan shu fayl kerak bo'ladi.

6.2 Ko'rish va tekshirish

bash
npm cache ls picocolors
text
make-fetch-happen:request-cache:https://registry.npmjs.org/picocolors
make-fetch-happen:request-cache:https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz
make-fetch-happen:request-cache:https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz

Birinchi qator — paket kartasi, qolganlari — biz o'rnatgan ikki versiya arxivi. make-fetch-happen — npm ichidagi yuklovchining nomi, e'tibor bermang.

bash
npm cache verify
text
Cache verified and compressed (D:\kurs\npm-cache\_cacache)
Content verified: 136 (102611070 bytes)
Content garbage-collected: 12 (4741151 bytes)
Index entries: 136
Finished in 0.962s

npm har faylning barmoq izini qayta hisobladi: 136 ta fayl joyida (~102 MB). Hech qaysi yozuvga bog'lanmagan 12 ta "yetim" fayl o'chirildi (garbage-collected — "axlat yig'ildi").

6.3 Tozalash — nega npm qarshilik qiladi

bash
npm cache clean
text
npm error As of npm@5, the npm cache self-heals from corruption issues by treating integrity mismatches as cache misses.
npm error As a result, data extracted from the cache is guaranteed to be valid.
npm error If you want to make sure everything is consistent, use `npm cache verify` instead.
npm error Deleting the cache can only make npm go slower, and is not likely to correct any problems you may be encountering!
npm error
npm error On the other hand, if you're debugging an issue with the installer, or race conditions that depend on the timing of writing to an empty cache, you can use `npm install --cache /tmp/empty-cache` to use a temporary cache instead of removing the actual one.
npm error
npm error If you're sure you want to delete the entire cache, rerun this command with --force.
npm error A complete log of this run can be found in: D:\kurs\npm-cache\_logs\2026-10-07T06_03_57_327Z-debug-0.log

Mazmuni: "npm 5 dan beri kesh o'zini o'zi davolaydi — barmoq izi mos kelmagan fayl keshda yo'qdek hisoblanadi. Tekshirish uchun — npm cache verify. O'chirish npm'ni faqat sekinlashtiradi. Sinamoqchi bo'lsangiz — --cache bilan vaqtinchalik papka bering. Baribir o'chirmoqchimisiz — --force qo'shing".

Internetdagi eski maslahatlar "npm buzildimi — npm cache clean --force" deydi. Bugun bu kamdan-kam kerak: disk to'lganda yoki tajriba uchun. Biz tajriba uchun tozalaymiz:

bash
npm cache clean --force
text
npm warn using --force Recommended protections disabled.

"--force: tavsiya etilgan himoyalar o'chirildi". Kesh bo'sh.

6.4 Internetsiz o'rnatish

Mashq loyihasini asl holatiga qaytaring (git restore package.json package-lock.json): lock-faylda yana prettier 3.0.0 va nanoid 3.3.4. node_modules ni o'chirib, --offline (faqat keshdan) bilan o'rnatamiz:

bash
npm ci --offline
text
npm error code ENOTCACHED
npm error request to https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz failed: cache mode is 'only-if-cached' but no cached response is available.
npm error A complete log of this run can be found in: D:\kurs\npm-cache\_logs\2026-10-07T06_19_19_434Z-debug-0.log

"prettier-3.0.0.tgz so'rovi bajarilmadi: rejim — 'faqat keshdan', keshda esa yo'q". Kesh hozirgina tozalangan — mantiqan to'g'ri. Bir marta internet bilan npm ci, keyin node_modules ni yana o'chirib, qaytadan:

bash
npm ci --offline
text

added 3 packages, and audited 4 packages in 382ms

1 package is looking for funding
  run `npm fund` for details

found 0 vulnerabilities

Internetsiz o'rnatildi. Yumshoqrog'i — --prefer-offline: keshda bori keshdan, yo'g'i internetdan.

Diqqat: found 0 vulnerabilities ga qarang. nanoid 3.3.4 da zaiflik bor edi! Internetsiz npm audit registrdan ma'lumot ololmadi va "hech narsa topilmadi" dedi. "0 ta zaiflik" — "zaiflik yo'q" degani emas. Xavfsizlik tekshiruvi doim internet bilan.

CI'da ham shu g'oya: vazifalar ning pages.yml faylida actions/setup-node qadamida cache: npm qatori bor. GitHub keshni ishga tushirishlar orasida saqlaydi va npm ci tezlashadi.

6.5 npx keshi

npm'ga birinchi qadam darsidagi npx cowsay Salom ni eslang. npx yuklaganlari _npx da turadi:

bash
npm cache npx ls
text
e3e1d528ee105f80: cowsay@1.6.0

Chapda — kalit, o'ngda — paket. O'chirish kalit bilan:

bash
npm cache npx rm e3e1d528ee105f80
text
Removing npx key at D:\kurs\npm-cache\_npx\e3e1d528ee105f80

npx chuqur — npx va npm create darsida.

Tekshirib ko'ring: Bobur npm install da g'alati xatoga duch keldi va "npm cache clean --force qiling" degan maslahat topdi. Siz unga avval nima deysiz?

Javob

Avval xato matnini o'qish va npm cache verify qilish. Kesh o'zini o'zi davolaydi, shuning uchun clean muammoni kamdan-kam hal qiladi, faqat keyingi o'rnatishni sekinlashtiradi. Sabab ko'pincha boshqa: internet, registr sozlamasi yoki Node versiyasi — buni npm doctor tekshiradi.

7. npm doctor: npm'ning tibbiy ko'rigi

7.1 Hisobot

Hisobot bloklardan iborat: har blokda tekshiruv nomi, keyin Ok yoki Not ok, keyin izoh. Ko'zingiz bilan faqat Not ok ni qidiring:

bash
npm doctor
text
Connecting to the registry
Ok

Checking npm version
Not ok
Use npm v12.2.0

Checking node version
Ok
current: v24.21.0, recommended: v24.21.0

Checking configured npm registry
Ok
using default registry (https://registry.npmjs.org/)

Checking for git executable in PATH
Ok
D:\Dasturlash\Install\Git\mingw64\bin\git.EXE

Checking for global bin folder in PATH
Ok
D:\kurs\npm-global

npm error Some problems found. See above for recommendations.
npm error A complete log of this run can be found in: D:\kurs\npm-cache\_logs\2026-10-07T06_04_47_796Z-debug-0.log
Tekshiruv Nimani Bizda
Connecting to the registry registrga ulanish Ok
Checking npm version npm eng yangisimi Not ok — npm 12 bor
Checking node version Node joriy LTS mi Ok
configured npm registry registr manzili Ok — rasmiy
git executable in PATH git topiladimi Ok
global bin folder in PATH global buyruqlar ishlaydimi Ok

Bitta "Not ok" bor, lekin u xato emas, ma'lumot. npm 12 — yangi MAJOR versiya (birinchi nashri 2026-07-08), Node 24 esa o'zi bilan npm 11 ni olib keladi. Kurs npm 11.19.0 da tekshirilgan, shuning uchun yangilamaymiz. Biror "Not ok" bo'lsa, npm doctor 1 bilan tugaydi.

7.2 Windows'da qisqaroq

Linux va macOS'da npm doctor yana oltita tekshiruv qiladi: kesh, node_modules va global papkalarning fayl ruxsatlari hamda kesh butunligi. Windows'da ular o'tkazib yuboriladi (npm manba kodida windows: false). Kesh butunligini Windows'da npm cache verify bilan tekshirasiz.

Guruh bo'yicha ham ishlatsa bo'ladi: npm doctor ping, npm doctor registry, npm doctor versions, npm doctor environment.

7.3 Qachon kerak

  • npm install osilib qoladi. Connecting to the registry — Not ok bo'lsa, muammo tarmoqda, loyihada emas.
  • Paketlar g'alati joydan kelmoqda. Registr manzili boshqa — .npmrc va registr darsida.
  • Global buyruq "topilmadi". global bin folder in PATH — Not ok (PATH darsi).

8. Ko'p uchraydigan xatolar

Belgi Sabab Davosi
npm error code ELSPROBLEMS extraneous, invalid yoki missing npm install yoki npm ci
skript npm outdated da to'xtadi eskirgan paket bor → chiqish kodi 1 zanjirga qo'ymang
npm error code ENOTCACHED --offline, keshda fayl yo'q bir marta internet bilan yoki --prefer-offline
404 No match found for version paket bor, versiya yo'q npm view <nom> versions

Yana ikki chalkashlik: UNMET OPTIONAL DEPENDENCY — xato emas (chiqish kodi 0). npm update dan keyin package.json o'zgarmagani — kutilgan xulq.

9. Mashqlar

Mashqlar kurs/mashqlar/16/03-npm-buyruqlari/ da. Loyihani asl holatiga qaytaring (picocolors@1.0.0, nanoid@3.3.4, dev'da prettier@3.0.0) va commit qiling — tajribalardan keyin git restore bilan qaytasiz.

1-mashq (oson): vazifalar inventari

kurs/vazifalar da bo'sh joylarni to'ldiring.

  • npm ls — package.json da nechta paket:
  • npm ls prettier — Prettier versiyasi:
  • npm ls ms — ms ni to'g'ridan-to'g'ri olib kelgan paket:
  • npm outdated; echo $? — chiqish kodi:
Yechim
bash
npm ls prettier
text
vazifalar@ D:\kurs\vazifalar
`-- prettier@3.9.9

npm ls — 8 ta. npm ls ms — eslint → debug → ms. npm outdated — jadvalsiz, chiqish kodi 0 (2026-10-07 holatiga). Keyinroq yangi versiyalar chiqsa, sizda jadval va 1 chiqadi — bu ham to'g'ri, faqat sana boshqa.

2-mashq (o'rta): Wanted ni oldindan ayting

Mashq loyihasida ikki yozuvni o'zgartiring:

bash
npm pkg set dependencies.picocolors=1.0.0
npm pkg set devDependencies.prettier=~3.0.0

Bu buyruqlar jim tugaydi (chiqish yo'q) — bu muvaffaqiyat belgisi. npm outdated dan oldin Wanted ni ayting:

  • picocolors ("1.0.0"):
  • prettier ("~3.0.0"):
  • nanoid ("^3.3.4", o'zgarmagan):

Yordam: ~ faqat PATCH yangilanishiga ruxsat beradi (npm'ga birinchi qadam). 3.0.x versiyalarini npm view prettier@~3.0.0 version ko'rsatadi — oxirgisi kerak.

Yechim
bash
npm outdated
text
Package     Current  Wanted  Latest  Location                 Depended by
nanoid        3.3.4  3.3.20   6.0.2  node_modules/nanoid      03-npm-buyruqlari
picocolors    1.0.0   1.0.0   1.1.1  node_modules/picocolors  03-npm-buyruqlari
prettier      3.0.0   3.0.3   3.9.9  node_modules/prettier    03-npm-buyruqlari
  • picocolors: belgisiz — faqat 1.0.0, Wanted = Current.
  • prettier: ~3.0.0 — 3.0.x qatori, oxirgisi 3.0.3.
  • nanoid: ^3.3.4 — 3.x ichida eng yangisi 3.3.20.

Latest hech qayerda o'zgarmadi — u package.json ga emas, registrdagi tegga bog'liq. Oxirida git restore package.json.

3-mashq (o'rta): npm view bilan tergov

Faqat npm view bilan javob toping:

  1. Vite'ning eng yangi versiyasi:
  2. Vite qaysi Node versiyalarida ishlaydi?
  3. nanoid ning legacy tegi:
  4. picocolors ochilgandagi hajmi, bayt:
  5. vitee — Vite'ning nusxasimi? Qaysi belgilar shubhali?
Yechim
bash
npm view picocolors dist.unpackedSize
text
6373
  1. npm view vite version → 8.3.3 (2026-10-07 holatiga; 2026-10-08 da 8.3.4 chiqdi — sizda yangiroq bo'lishi mumkin).
  2. npm view vite engines → ^20.19.0 || >=22.12.0 — demak, Node 24 ham.
  3. npm view nanoid dist-tags → legacy: '3.3.20'.
  4. 6373 bayt — kartadagi 6.4 kB ham shu.
  5. Yo'q. npm view vitee name version description license time.modified faqat uch maydon qaytaradi: tavsif va litsenziya yo'q, oxirgi o'zgarish — 2022-yil. O'rnatishga sabab yo'q.

4-mashq (qiyin): Internetsiz o'rnatish, alohida kesh bilan

Haqiqiy keshingizni tozalamasdan isbotlang: npm'ning o'zi tavsiya qilgan vaqtinchalik kesh (--cache) bilan. Mashq loyihasida:

  1. node_modules ni o'chirib, npm ci --offline --cache .kesh. Qanday xato va nega?
  2. npm ci --cache .kesh — internet bilan.
  3. node_modules ni yana o'chirib, 1-qadamni takrorlang. Endi nima bo'ladi?
  4. npm cache ls --cache .kesh — nechta .tgz arxiv:
  5. 3-qadamdagi audit natijasi 2-qadamdagidan farq qildimi? Nega?

Oxirida .kesh papkasini o'chiring — u commit qilinmasin.

Yechim
bash
npm ci --offline --cache .kesh
text
npm error code ENOTCACHED
npm error request to https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz failed: cache mode is 'only-if-cached' but no cached response is available.
npm error A complete log of this run can be found in: D:\kurs\mashqlar\16\03-npm-buyruqlari\.kesh\_logs\2026-10-07T06_19_35_166Z-debug-0.log
  1. ENOTCACHED — yangi .kesh bo'sh, internetga --offline ruxsat bermaydi. Jurnal ham .kesh\_logs ga yozildi: npm butunlay shu papkadan foydalanmoqda.
  2. added 3 packages va 1 high severity vulnerability.
  3. added 3 packages, … found 0 vulnerabilities — keshdan.
  4. Uchta: nanoid, picocolors, prettier arxivlari. To'rtta security-advisory:nanoid:… yozuvi ham bor — audit natijalari ham keshlanadi.
  5. Farq qildi: 1 ta zaiflik → 0. Internetsiz audit yangi ma'lumot ololmadi. "0" — "tekshira olmadim", "xavfsiz" emas.

10. Real ishda

  • Yangi ishdagi birinchi kun: npm ci, npm ls, npm outdated — besh daqiqada loyiha "sog'lig'i" ko'rinadi.
  • Paket tanlash npm view dan boshlanadi: litsenziya, oxirgi chiqish, bog'liqliklar, hajm (Paket tanlash va baholash).
  • Zaiflik e'lon qilindi: "Bizda bormi, qayerdan keladi?" — npm ls <nom>.
  • Intervyu: "Wanted va Latest farqi?", "npm update package.json ni o'zgartiradimi?", "npm cache clean --force qachon kerak?".

Xulosa

  • npm ls — diskdagi daraxt; --all — hammasi; npm ls <nom> va npm explain — "qayerdan keldi?".
  • extraneous, invalid, missing → ELSPROBLEMS; davosi — npm install yoki npm ci.
  • npm outdated: Current — diskda, Wanted — chegara ichida, Latest — registr tegi; eskirgan bo'lsa — chiqish kodi 1.
  • npm update faqat Wanted gacha; MAJOR yangilash — alohida qaror.
  • npm view — o'rnatmasdan: versiya, engines, peerDependencies, teglar, hajm.
  • Kesh o'zini davolaydi: verify — tekshirish, clean --force — kamdan-kam. npm doctor — registr, versiyalar, git, PATH.

Keyingi dars: package.json I: pasport maydonlari va "type" — vazifalar ning package.json ini maydonma-maydon o'qiymiz: nega unda version yo'q, private nimadan himoya qiladi va "type" kutubxonalarda qanday tuzoq yasaydi.

Manbalar

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
npm buyruqlari chuqur: npm ls, outdated, view, cache va doctor — IlmHamroh