Mundarija (20)
- Bu darsda
- 1. Nega bu kerak?
- 2. pnpm qanday quradi
- 2.1 vazifalar ni pnpm'ga o'tkazish
- 2.2 Uch qavat
- 2.3 Hard link'ni ko'z bilan ko'rish
- 3. O'lchov: npm va pnpm
- 4. Qat'iylik: fantom bog'liqlik yo'q
- 5. Kundalik buyruqlar
- 6. O'rnatish skriptlari: allowBuilds
- 7. Workspace va catalog: monorepo
- 8. Ko'p uchraydigan xatolar
- 9. Mashqlar
- 1-mashq (oson): Ildizda nima bor?
- 2-mashq (o'rta): O'z o'lchovingiz
- 3-mashq (o'rta): Skriptga ruxsat
- 4-mashq (qiyin): «Bahor» monoreposi
- 10. Real ishda
- Xulosa
- Manbalar
pnpm: tez va qat'iy paket menejeri — store, symlinklar, workspace va allowBuilds
Qisqacha: pnpm har paket faylini kompyuterda bir marta — umumiy omborda (store) saqlaydi. Loyihalarga esa qattiq havola (hard link) qiladi. Ildizdagi
node_modulesda faqat siz e'lon qilgan paketlar turadi, qolganlarinode_modules/.pnpmichida symlinklar bilan ulanadi — shuning uchun fantom bog'liqlik ishlamaydi. pnpm 12 paketlarning o'rnatish skriptlarini (postinstall) sukut bo'yicha bloklaydi: ruxsatallowBuildsbilan beriladi. Monorepo uchun —pnpm-workspace.yamlva versiyalar katalogi (catalog:).
Bu darsda
- pnpm
node_modulesni qanday qurishini ko'rasiz: store,.pnpm, symlink va hard link. vazifalarnusxasinipnpm importbilan pnpm'ga o'tkazib, npm bilan o'lchab solishtirasiz.- Fantom bog'liqlik pnpm'da nega ishlamasligini va
shamefullyHoistni bilasiz. pnpm add,why,dlx,approve-buildsvaallowBuildsbilan ishlaysiz.pnpm-workspace.yaml,workspace:*vacatalog:bilan kichik monorepo quriladi.
Oldin bilishingiz kerak: node_modules ichida, Lock-fayllar va npm ci, .npmrc va registry sozlamalari.
1. Nega bu kerak?
Sardorning kompyuterida o'nta loyiha bor, har birida ESLint, Prettier, TypeScript. Masalan, vazifalar ning node_modules i — 86 MB, o'n loyiha — taxminan bir gigabayt, ichida bir xil fayllar o'n martadan. Node_modules ichida darsida yana bir muammo ko'rdik: ms e'lon qilinmagan, lekin ishlaydi (fantom bog'liqlik).
pnpm ("performant npm") — ikkala muammoni boshqa tuzilma bilan hal qiladigan paket menejeri. Vue, Vite va boshqa ko'p ochiq loyihalarning repolari pnpm'da. Bugun uni o'rnatmasdan (global o'rnatishsiz) sinab, raqamlar bilan solishtiramiz. vazifalar kanoni npm'da qoladi — bu dars tajriba.
Maslahat: Chiqishlar 2026-10-10 da Windows 11, Node 24.21.0 va pnpm 12.10.1 bilan olingan (2026-10-06 da chiqqan;
npm view pnpm dist-tagsdalatest). Biz pnpm'ni global o'rnatmadik: darsdagipnpm—npx -y pnpm@12.10.1ning qisqa nomi (Git Bash funksiyasipnpm() { npx -y pnpm@12.10.1 "$@"; }). Doimiy o'rnatish yo'llari — rasmiy hujjatda (pnpm.io/installation):npm i -g pnpm, Corepack yoki mustaqil o'rnatuvchi. Ombor (store) ham sinov papkasiga yo'naltirilgan, shuning uchun yo'llar…\xdg-data\pnpm\storeko'rinishida.
2. pnpm qanday quradi
2.1 vazifalar ni pnpm'ga o'tkazish
kurs/mashqlar/16/13-pnpm/ ga vazifalar ning nusxasini oling (asl loyihaga tegmang). pnpm import — package-lock.json dan o'sha versiyalar bilan pnpm-lock.yaml yasaydi:
pnpm importDone in 7.5s using pnpm v12.10.1Yangi lock boshi:
lockfileVersion: '9.0'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
importers:
.:
devDependencies:
'@eslint/js':
specifier: 10.0.1
version: 10.0.1(eslint@10.12.0)
…YAML formati (lock-fayllar darsidagi jadval). specifier — package.json dagi yozuv, version — aniq versiya. 10.0.1(eslint@10.12.0) — paket qaysi peer bilan birga o'rnatilgani. Endi package-lock.json ni o'chiring — loyihada bitta lock-fayl bo'lsin. O'rnatish (--frozen-lockfile — npm ci ning pnpm'dagi o'xshashi):
pnpm install --frozen-lockfile✓ Lockfile passes supply-chain policies (verified 5s ago)
Lockfile is up to date, resolution step is skipped
Progress: resolved 102, reused 0, downloaded 14, added 0
Packages are hard linked from the content-addressable store to the virtual store.
Content-addressable store is at: …\xdg-data\pnpm\store\v11
Virtual store is at: node_modules/.pnpm
…
Packages: +102
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 102, reused 0, downloaded 102, added 102, done
devDependencies:
+ @eslint/js 10.0.1
+ @typescript/native <- typescript 7.0.2
+ eslint 10.12.0
+ globals 17.13.0
+ prettier 3.9.9
+ typescript <- @typescript/typescript6 6.0.2
+ typescript-eslint 8.71.1
+ web-vitals 6.2.3
Done in 18.3s using pnpm v12.10.1(Yuklab olish qatorlari qisqartirildi.) Xuddi npm'dagidek 102 paket. Ikki muhim qator: "Paketlar content-addressable store dan virtual store ga qattiq havola qilindi". Birinchi qatordagi tekshiruv — pnpm 12 ning lock-faylni ta'minot zanjiri qoidalariga solishtirishi (Ta'minot zanjiri xavfsizligi).
2.2 Uch qavat
flowchart LR
S["store (bitta, umumiy)<br/>fayllar mazmun hash'i bilan"] -- "hard link" --> V["node_modules/.pnpm<br/>eslint@10.12.0/…"]
V -- "symlink" --> R["node_modules/eslint"]
V -- "symlink" --> D["…/.pnpm/eslint@10.12.0/<br/>node_modules/debug"]Content-addressable store (mazmun bo'yicha manzillangan ombor) — har fayl o'z mazmunining hash'i nomi bilan saqlanadi (lock-fayllar darsidagi integrity g'oyasi). Bir xil fayl ikkinchi marta saqlanmaydi.
Hard link (qattiq havola) — diskdagi bitta faylning ikkinchi nomi: nusxa emas, joy egallamaydi. Symlink (ramziy havola) — "u yoqda turibdi" degan ko'rsatkich, kirish nuqtalari darsidagi file: o'rnatishda ko'rgansiz.
Ildizdagi node_modules:
ls -a node_modules.
..
.bin
.modules.yaml
.pnpm
.pnpm-workspace-state-v1.json
@eslint
@typescript
eslint
globals
prettier
typescript
typescript-eslint
web-vitalsFaqat package.json dagi 8 ta paket (va ularning scope papkalari)! npm'da bu yerda 75 ta papka edi. Ular — havolalar:
eslint -> .pnpm/eslint@10.12.0/node_modules/eslint.pnpm ichida esa 104 ta papka — har paket versiyasi uchun bittadan. Har birining o'z node_modules i bor, unda faqat o'sha paket e'lon qilgan bog'liqliklar (havola sifatida). Shuning uchun eslint o'z debug ini topadi — Node qidiruvi .pnpm/eslint@10.12.0/node_modules/ dan boshlanadi.
2.3 Hard link'ni ko'z bilan ko'rish
Ikkinchi loyiha (ikkinchi/) — o'sha package.json va lock bilan:
Progress: resolved 102, reused 102, downloaded 0, added 102, done
…
Done in 1.7s using pnpm v12.10.1reused 102, downloaded 0 — hammasi omborda bor edi. Windows'ning fsutil hardlink list buyrug'i bitta faylning hamma nomlarini ko'rsatadi (Prettier'ning package.json i):
…\kurs\mashqlar\16\13-pnpm\ikkinchi\node_modules\.pnpm\prettier@3.9.9\node_modules\prettier\package.json
…\kurs\mashqlar\16\13-pnpm\vazifalar\node_modules\.pnpm\prettier@3.9.9\node_modules\prettier\package.json
…\xdg-data\pnpm\store\v11\files\c4\739a7f7a3d…(hash davomi)Bitta fayl, uch nom: ikki loyiha va ombor. Diskda u bir marta turadi.
Tekshirib ko'ring: pnpm loyihasida
node_modulesni o'chirdingiz. Ombordagi fayllar ham o'chadimi?
Javob
Yo'q. Hard link — faylning bir nomi; nomlardan birini o'chirsangiz, qolganlari (ombordagi) qoladi. Shuning uchun keyingi pnpm install yana reused bilan bir zumda tugaydi. Ishlatilmayotgan ombor fayllarini tozalash — pnpm store prune.
3. O'lchov: npm va pnpm
vazifalar (102 paket), har buyruq 5 marta, kesh/ombor to'la (pnpm npx siz, to'g'ridan-to'g'ri node …/pnpm.mjs bilan — npx ning ishga tushish vaqti qo'shilmasin):
- npm ci (noldan)6,2 s
- pnpm install, node_modules yo'q1,1 s
- pnpm install, node_modules bor0,28 s
Manba: O'lchov: Windows 11, Intel Core i5-12500H, 16 GB, Node 24.21.0, npm 11.19.0, pnpm 12.10.1, 2026-10-10
Xom raqamlar (ms): npm ci — 4333, 5495, 6825, 6950, 6192; pnpm, node_modules yo'q — 1155, 1096, 1092, 1108, 1070; pnpm, node_modules bor — 291, 286, 280, 232, 236. Bizning mashinada pnpm noldan o'rnatishda taxminan 5.6 baravar tez (6.2 s / 1.1 s). Lock-fayllar darsidagi alohida o'lchovda npm ci medianasi 6.4 s chiqqan. Mashina o'sha, lekin kun va yuk boshqa. Shuning uchun bitta o'lchovga emas, medianaga qaraymiz. Sabab: fayllar yuklanmaydi va nusxalanmaydi, faqat havola qilinadi. Birinchi o'rnatish (ombor bo'sh) esa ikkalasida ham tarmoqqa bog'liq — bizda pnpm 18.3 s (sekin internet ogohlantirishlari bilan).
Disk: npm'ning node_modules i 86 MB. pnpm'da du bir loyihaga 84 MB ko'rsatadi. Lekin ikki pnpm loyihasi va ombor birgalikda — 99 MB, chunki hard link bir marta sanaladi. Ikki npm loyihasi esa 172 MB.
4. Qat'iylik: fantom bog'liqlik yo'q
Node_modules ichida darsidagi tajriba, endi pnpm loyihasida:
node --input-type=module \
-e "import ms from 'ms'; console.log(ms('1d'))"Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'ms' imported from …\kurs\mashqlar\16\13-pnpm\vazifalar\[eval1]npm'da bu 86400000 chiqargan edi. pnpm'da ildizda ms yo'q — u faqat debug ning ichida. Fantom bog'liqlik o'rnatish paytida emas, birinchi ishga tushirishda ochiladi — bu pnpm'ning eng katta foydasi. vazifalar ning o'zi esa toza: pnpm test — ℹ tests 143, ℹ pass 143, pnpm lint va pnpm run tip — xatosiz. Demak vazifalar hech qanday arvohga tayanmaydi.
ms ni kim olib kelgan — npm ls ning pnpm'dagi o'xshashi:
pnpm why msms@2.1.3
└─┬ debug@4.4.3
├─┬ @eslint/config-array@0.23.5
│ └─┬ eslint@10.12.0
…
Found 1 version of ms(Daraxt qisqartirildi.) Pastdan yuqoriga o'qiladi: ms ← debug ← … ← vazifalar.
Ba'zi eski asboblar fantomlarga tayanadi va pnpm'da sinadi. Vaqtinchalik chora — pnpm-workspace.yaml da shamefullyHoist: true ("uyalmasdan ko'tar"): pnpm npm kabi hammasini ildizga chiqaradi. Sinovda shundan keyin ms yana ishladi va ildizda 75 ta papka paydo bo'ldi. Nomi bejiz shunday emas — bu chekinish, yechim emas.
5. Kundalik buyruqlar
| npm | pnpm | Izoh |
|---|---|---|
npm install |
pnpm install (pnpm i) |
|
npm ci |
pnpm install --frozen-lockfile |
CI'da pnpm buni o'zi yoqadi |
npm i nom / -D |
pnpm add nom / -D |
|
npm run build |
pnpm build |
run shart emas |
| npm | pnpm | Izoh |
|---|---|---|
npm ls nom / npm explain |
pnpm why nom |
|
npx nom |
pnpm dlx nom / pnpm exec nom |
dlx — yuklab, exec — loyihadagi |
npm uninstall |
pnpm remove |
|
npm dedupe |
pnpm dedupe |
pnpm add picocolors — "^1.1.1" yozdi (pnpm ham sukut bo'yicha ^; aniq versiya — -E yoki saveExact). pnpm dlx cowsay@1.6.0 Salom — sigir chiqdi, paket esa vaqtinchalik papkaga (…/xdg-cache/pnpm/dlx/…) o'rnatildi, loyihaga tegmadi.
6. O'rnatish skriptlari: allowBuilds
Ba'zi paketlar o'rnatilganda o'z kodini ishga tushiradi — postinstall skripti. esbuild ham:
npm view esbuild@0.28.2 scripts.postinstallnode install.jsBu foydali (masalan, binarni tekshirish), lekin xavfli ham: zararli paket ham aynan shu yo'l bilan kompyuteringizda kod bajaradi (Ta'minot zanjiri). pnpm 10 dan beri bunday skriptlar sukut bo'yicha bloklanadi:
pnpm add -D esbuild@0.28.2…
devDependencies:
+ esbuild 0.28.2
Error: ERR_PNPM_IGNORED_BUILDS
× adding a new package
╰─▶ Ignored build scripts: esbuild@0.28.2
help: Run "pnpm approve-builds" to pick which dependencies should be allowed
to run scripts."O'rnatish skriptlari e'tiborsiz qoldirildi: esbuild. Qaysi paketlarga ruxsat berishni pnpm approve-builds bilan tanlang". pnpm 12.10.1 da bu xato — buyruq 1 bilan tugadi. Ruxsat berish:
pnpm approve-builds esbuild✓ Lockfile passes supply-chain policies (verified 19s ago)
Already up to date
.../esbuild@0.28.2/node_modules/esbuild postinstall$ node install.js
.../esbuild@0.28.2/node_modules/esbuild postinstall: DoneSkript ishladi va pnpm-workspace.yaml ga yozildi:
allowBuilds:
esbuild: trueBu ro'yxat Git'ga commit qilinadi — jamoa "qaysi paket kod bajara oladi" degan qarorni ko'radi va ko'rib chiqadi.
Diqqat: Eski maqolalarda (pnpm 10) bu sozlama
onlyBuiltDependencies: [esbuild]deb yozilgan. Biz uni pnpm 12.10.1 da sinadik — u ishlamadi, xuddi o'shaERR_PNPM_IGNORED_BUILDSchiqdi. Yangi nomi —allowBuilds. Versiya almashganda sozlama nomlari o'zgaradi: maqolaning sanasiga qarang va hujjatni o'z versiyangiz uchun o'qing.
npm 11.19.0 da ham o'xshash yo'nalish bor. U npm i -D esbuild@0.28.2 da ogohlantiradi: npm warn install-scripts 1 package has install scripts not yet covered by allowScripts va npm install-scripts approve <pkg> buyrug'ini taklif qiladi. Lekin o'rnatish xatosiz tugaydi — pnpm 12 dagidek to'xtamaydi. Batafsil — Ta'minot zanjiri darsida.
7. Workspace va catalog: monorepo
Monorepo — bitta Git repozitoriyda bir nechta paket. «Bahor» uchun: @bahor/narx (narxlar) va @bahor/kassa (uni ishlatadi). kurs/mashqlar/16/13-pnpm/monorepo/:
monorepo/
├── package.json
├── pnpm-workspace.yaml
└── packages/
├── narx/ (package.json, index.js)
└── kassa/ (package.json, index.js)pnpm-workspace.yaml:
# «Bahor» monoreposi: hamma paketlar packages/ ichida
packages:
- "packages/*"
# Versiyalar katalogi: bir joyda yoziladi, paketlar "catalog:" deydi
catalog:
picocolors: 1.1.1packages/narx/package.json da "picocolors": "catalog:" — "versiyani katalogdan ol". packages/kassa/package.json da "@bahor/narx": "workspace:*" — "registrdan emas, shu repodagi paketni ol". Ildiz package.json da: "start": "pnpm --filter @bahor/kassa start".
pnpm install
pnpm startScope: all 3 workspace projects
…
Done in 856ms using pnpm v12.10.1
$ pnpm --filter @bahor/kassa start
$ node index.js
osh: 35000 so'm
ko'k choy: 5000 so'mkassa/node_modules/@bahor/narx -> ../../../narx — symlink: narx ni o'zgartirsangiz, kassa darhol ko'radi. --filter — buyruqni faqat bitta paketda bajarish. Lock'da katalog alohida bo'lim:
catalogs:
default:
picocolors:
specifier: 1.1.1
version: 1.1.1Katalog nima beradi? O'nta paketda picocolors bo'lsa, versiya bitta joyda yoziladi va hammasi bir xil bo'ladi — node_modules ichida darsidagi ikki nusxa muammosining oldi olinadi. npm'da ham workspace bor ("workspaces" maydoni), lekin katalog yo'q.
Tekshirib ko'ring: Monorepoda
kassa"@bahor/narx": "workspace:*"ni ishlatadi.kassanpm'ga nashr qilinsa, foydalanuvchida nima bo'ladi?
Javob
pnpm nashr paytida workspace:* ni narx ning haqiqiy versiyasiga (1.0.0) almashtiradi — tashqi foydalanuvchi registrdan aynan shuni oladi. catalog: ham nashrda aniq versiyaga aylanadi. Shuning uchun bu yozuvlar faqat repo ichida ma'noga ega.
8. Ko'p uchraydigan xatolar
| Xabar / belgi | Sabab | Davosi |
|---|---|---|
ERR_MODULE_NOT_FOUND npm'dan o'tgach |
fantom bog'liqlik | paketni e'lon qiling (shamefullyHoist — oxirgi chora) |
ERR_PNPM_IGNORED_BUILDS |
postinstall bloklandi |
pnpm approve-builds nom |
onlyBuiltDependencies ishlamayapti |
pnpm 12 da yangi nom | allowBuilds |
| ikki lock-fayl | pnpm import dan keyin eski qoldi |
package-lock.json ni o'chiring |
| Belgi | Sabab | Davosi |
|---|---|---|
pnpm: command not found |
pnpm o'rnatilmagan | npx pnpm@… yoki rasmiy o'rnatish |
du katta ko'rsatadi |
hard link'lar har papkada sanaladi | ombor bilan birga o'lchang |
workspace:* registrda topilmadi |
npm install ishlatildi |
pnpm install |
9. Mashqlar
Mashqlar kurs/mashqlar/16/13-pnpm/ da. pnpm'ni npx -y pnpm@12.10.1 bilan chaqiring.
1-mashq (oson): Ildizda nima bor?
pnpm'ga o'tkazilgan vazifalar nusxasida ls node_modules va ls -la node_modules/prettier:
- ildizdagi paket papkalari soni (
.bin,.pnpmva fayllardan tashqari): node_modules/prettier— papkami yoki havolami?msni import qilish natijasi:
Yechim
8 ta: @eslint/js, @typescript/native, eslint, globals, prettier, typescript, typescript-eslint, web-vitals (scope'li ikkitasi @eslint/ va @typescript/ papkalari ichida). Hammasi — .pnpm/<nom>@<versiya>/node_modules/<nom> ga symlink. ms — ERR_MODULE_NOT_FOUND: ildizda yo'q, u faqat debug ga ko'rinadi.
2-mashq (o'rta): O'z o'lchovingiz
vazifalarnusxasini oling,pnpm import,package-lock.jsonni o'chiring,pnpm install --frozen-lockfile.pnpm test— testlar soni:node_modulesni o'chirib,pnpm install --frozen-lockfileni 5 marta o'lchang (bash'da:time …). Mediana?- Asl
vazifalardanpm cini 5 marta o'lchang. Necha baravar farq?
Yechim
Bizda: pnpm mediana 1.1 s, npm ci — 6.2 s, taxminan 5.6 baravar («O'lchov» bo'limi). Sizda raqamlar boshqacha bo'ladi — disk, antivirus va internet ta'sir qiladi. Halol taqqoslash uchun ikkalasi ham "issiq" bo'lsin (kesh/ombor to'la) va npx ning o'z vaqti o'lchovga qo'shilmasin. Bir o'lchovga ishonmang — mediana.
3-mashq (o'rta): Skriptga ruxsat
Yangi papkada pnpm add -D esbuild@0.28.2. Qanday xato chiqadi? Ruxsat bering va pnpm-workspace.yaml ni o'qing.
Yechim
Error: ERR_PNPM_IGNORED_BUILDS … Ignored build scripts: esbuild@0.28.2 (chiqish kodi 1). pnpm approve-builds esbuild — postinstall: Done, faylda:
allowBuilds:
esbuild: trueBu faylni commit qiling. Har yangi allowBuilds qatori — PR'da alohida savol: "bu paketga kompyuterimizda kod bajarish huquqi kerakmi?".
4-mashq (qiyin): «Bahor» monoreposi
«Workspace va catalog» bo'limidagi monorepo'ni noldan quring: ikki paket (@bahor/narx, @bahor/kassa), picocolors faqat katalogda, kassa narx ni workspace:* bilan oladi, ildizdagi pnpm start kassani ishga tushiradi. narx dagi formatPrice(name) taom nomi va qalin narxni qaytaradi.
Yechim
packages/narx/package.json:
{
"name": "@bahor/narx",
"version": "1.0.0",
"private": true,
"type": "module",
"exports": "./index.js",
"dependencies": {
"picocolors": "catalog:"
}
}packages/narx/index.js:
// index.js — «Bahor» narxlari va formatlash
import pc from "picocolors";
export const prices = { osh: 35000, manti: 30000, "ko'k choy": 5000 };
export function formatPrice(name) {
return `${name}: ${pc.bold(String(prices[name]))} so'm`;
}packages/kassa/package.json:
{
"name": "@bahor/kassa",
"version": "1.0.0",
"private": true,
"type": "module",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"@bahor/narx": "workspace:*"
}
}packages/kassa/index.js:
// index.js — kassa: narx paketidan foydalanadi
import { formatPrice } from "@bahor/narx";
for (const dish of ["osh", "ko'k choy"]) {
console.log(formatPrice(dish));
}Ildizda pnpm-workspace.yaml («Workspace va catalog» bo'limidagidek) va package.json ("private": true, "start": "pnpm --filter @bahor/kassa start"). pnpm install va pnpm start — osh: 35000 so'm, ko'k choy: 5000 so'm (terminalda raqamlar qalin). E'tibor bering: kassa picocolors ni e'lon qilmagan va uni import ham qilmaydi — pnpm'da bu talab, npm'da esa odat.
10. Real ishda
- Ochiq kodli loyihalar (Vue, Vite, Nuxt va boshqalar) pnpm monorepo'larida. Ularga hissa qo'shmoqchi bo'lsangiz, birinchi buyruq —
pnpm install. - CI'da pnpm
--frozen-lockfileni o'zi yoqadi; ombor keshlanadi va o'rnatish soniyalarda. - Xavfsizlik:
allowBuilds— "kim kod bajara oladi" degan oq ro'yxat. Bu ro'yxatni PR'da ko'rib chiqish — jamoa odati. - Intervyu: "pnpm npm'dan nima bilan farq qiladi?", "content-addressable store nima?", "phantom dependency pnpm'da nega yo'q?".
Xulosa
- pnpm fayllarni bitta omborda saqlaydi va loyihalarga hard link qiladi: ikkinchi loyiha
reused, disk deyarli o'smaydi. - Ildiz
node_modules— faqat e'lon qilingan paketlar (symlink), qolgani.pnpmichida; fantom bog'liqlik ishlamaydi. pnpm import— npm lock'idan o'tish;--frozen-lockfile—npm cio'xshashi; bizda 5.6 baravar tez.- O'rnatish skriptlari bloklanadi:
pnpm approve-builds,allowBuilds(pnpm 10 dagionlyBuiltDependencies— 12 da ishlamadi). pnpm-workspace.yaml:packages,catalog,workspace:*,--filter;shamefullyHoist— oxirgi chora.
Keyingi dars: Yarn va Bun — Yarn classic va berry, Plug'n'Play, Bun'ning bun install'i, packageManager maydoni va Corepack: mavjud loyihada qaysi menejer ekanini qanday bilasiz.
Manbalar
- pnpm Docs: Motivation, Symlinked node_modules structure, pnpm import, Workspaces, Catalogs, Settings (pnpm-workspace.yaml)
- pnpm 10.0.0 reliz eslatmasi (2025-01-07): o'rnatish skriptlarini sukut bo'yicha bloklash — github.com/pnpm/pnpm/releases
pnpm help approve-builds(12.10.1)
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!