Mundarija (27)
- Bu darsda
- 1. Nega bu kerak?
- 2. Qisqa tarix: nega bundlerlar o'zgardi
- 3. Asosiy vositalar
- 3.1 Rollup va Rolldown
- 3.2 esbuild
- 3.3 webpack, Rspack va Rsbuild
- 3.4 Turbopack
- 3.5 Parcel, Bun va kutubxona vositalari
- 3.6 Vite+ — butun zanjir bitta vositada
- 3.7 Dvigatel ichidagi dvigatellar: Oxc, SWC, Lightning CSS
- 4. Raqamlar: kim qancha ishlatiladi
- 5. Tezlik: o'zimiz o'lchadik
- 5.1 Usul
- 5.2 Natijani o'qish
- 6. Qachon nima: tanlov jadvali
- 7. Ko'p uchraydigan xatolar
- 7.1 Benchmark reklamasiga ishonish
- 7.2 Tezlik uchun ko'chish
- 7.3 Vositalarni aralashtirish
- 8. Mashqlar
- 1-mashq (oson): Vosita va uyi
- 2-mashq (o'rta): esbuild va Vite — bir loyiha
- 3-mashq (qiyin): O'z o'lchovingiz
- 9. Real ishda
- Xulosa
- Manbalar
Bundlerlar landshafti 2026: Rolldown, Turbopack, Rspack, esbuild
Qisqacha: 2026-yilda ilova uchun asosiy tanlov — Vite (ichida Rust'dagi Rolldown). Next.js loyihalari — Turbopack bilan, katta webpack loyihalari — webpack config'ini tushunadigan Rspack bilan. esbuild (Go) — tez yordamchi vosita, tsdown — kutubxona yig'ish uchun. Bizning o'lchovimizda 1 531 modulli loyihani esbuild, Rolldown, Rspack va Vite 0.3–0.5 soniyada, webpack + Babel esa 7.6 soniyada yig'di. Farqning asosiy sababi — til: Rust va Go JavaScript'dan ko'p marta tez va ko'p yadroni ishlatadi.
Bu darsda
- 2026-yildagi asosiy bundlerlarni va ularning "uyi"ni (qaysi freymvork, qaysi kompaniya) bilasiz.
- Yuklanish statistikasini o'qiysiz va undan to'g'ri xulosa chiqarasiz.
- Bundler tezligini o'zingiz o'lchaysiz — mediana, mashina ma'lumoti bilan.
- Loyiha turiga qarab vosita tanlay olasiz: ilova, kutubxona, Next.js, eski webpack loyiha.
Oldin bilishingiz kerak: Vite V: production build, webpack konseptlari, Transpilyatsiya: Babel, SWC, esbuild va Oxc.
1. Nega bu kerak?
Sardor ish e'lonlarini o'qiyapti: "Vite, Rspack bilan tajriba", "Turbopack", "esbuild", "Rollup plaginlari". Bir xil ishni qiladigan shuncha vosita nega bor? Qaysi birini o'rganish kerak?
Javob: hammasini chuqur o'rganish shart emas. Bundler tushunchalari — graf, chunk, hash, loader/plagin, tree shaking — hammasida bir xil (Bundler nima). Siz ularni Vite misolida bilasiz. Bu dars — xarita: har vosita qayerdan chiqqan, qayerda yashaydi va qachon unga duch kelasiz. Xaritasiz notanish nom qo'rqitadi, xarita bilan — "aha, bu webpack'ning Rust'dagi nusxasi" deysiz.
O'xshatish: bozorda ko'p choyxona bor, lekin choy damlash usuli bir xil — suv, choy, choynak. Biri tezroq qaynatadi, biri katta qozonda, biri faqat o'z mahallasiga xizmat qiladi.
2. Qisqa tarix: nega bundlerlar o'zgardi
flowchart LR
A["2012<br/>webpack (JS)"] --> B["2015<br/>Rollup (JS)"]
B --> C["2020<br/>esbuild (Go)<br/>Vite"]
C --> D["2022–2024<br/>Turbopack, Rspack<br/>(Rust)"]
D --> E["2026<br/>Rolldown 1.0<br/>Vite 8, Vite+"]Uch bosqich. Birinchisi — JavaScript'da yozilgan bundlerlar (webpack, Rollup, Parcel): ular imkoniyatlari bilan kuchli, lekin katta loyihada sekin. Ikkinchisi — 2020-yilda esbuild (Go tilida) ko'rsatdiki, bundler o'nlab baravar tez bo'lishi mumkin. Vite shu g'oyani oldi: dev'da esbuild, build'da Rollup. Uchinchisi — Rust: Turbopack (Vercel), Rspack (ByteDance) va nihoyat Rolldown (Vite jamoasi). Vite 8 (2026-yil 12-mart) ikki vositani bittaga — Rolldown'ga almashtirdi.
Nega aynan Go va Rust? Ular mashina kodiga kompilyatsiya qilinadi va ko'p yadroni bir vaqtda ishlatadi: 1 500 faylni 16 ta protsessor ipi parallel o'giradi. JavaScript esa bitta asosiy oqimda ishlaydi (Event loop darsidan bilasiz). Yana bir sabab — bitta o'tish: eski zanjirda kod Babel'da tahlil qilinib, Terser'da yana qayta tahlil qilinardi. Yangi vositalar (Oxc, SWC) AST'ni bir marta quradi va hammasini (o'girish, yig'ish, siqish) shu bilan qiladi.
3. Asosiy vositalar
3.1 Rollup va Rolldown
Rollup (2015) — ESM uchun qurilgan birinchi bundler; tree shaking'ni ommalashtirgan. Kutubxonalar uchun sevimli: toza, o'qiladigan natija. Vite 7 gacha build'ni Rollup qilgan. Uning plagin API'si — standart: Vite plaginlari ham shu shaklda (Vite plaginlari).
Rolldown — Rollup'ning Rust'dagi qayta yozilgani, Vite jamoasi (VoidZero kompaniyasi) tomonidan. Paketning npm tavsifi: "Fast JavaScript/TypeScript bundler in Rust with Rollup-compatible API" — "Rollup bilan mos API'li tez bundler". Uning 1.0 versiyasi 2026-yil 7-mayda chiqdi, hozirgisi — 1.2.12 (npm view). Ichida Oxc — Rust'dagi parser, transformer va minifikator.
Vite 8.3.3 ning package.json ini ochsak, dependencies da: rolldown, lightningcss, postcss, picomatch, tinyglobby. esbuild — endi faqat ixtiyoriy peerDependencies da. Ya'ni Vite 8 esbuild'siz ishlaydi.
Rolldown'ni to'g'ridan-to'g'ri ham ishlatish mumkin, lekin u "toza" bundler. Sardorning bahor-menyu sini (CSS importi bilan) Rolldown CLI'ga berdik:
[UNSUPPORTED_FEATURE] Bundling CSS is no longer supported (experimental support has been removed). See https://github.com/rolldown/rolldown/issues/4271 for details.Tarjimasi: "CSS yig'ish endi qo'llab-quvvatlanmaydi (tajribaviy qo'llab-quvvatlash olib tashlangan)". CSS'ni Vite qo'shadi (Lightning CSS bilan). Bu — Vite va Rolldown munosabati: Rolldown — dvigatel, Vite — tayyor mashina (dev server, HTML, CSS, public/, .env, HMR).
3.2 esbuild
esbuild — 2020-yil, Go tilida, Evan Wallace (Figma asoschilaridan biri) yozgan. Yuklanish bo'yicha eng ko'p o'rnatiladigan bundler — lekin ko'pincha boshqa vositaning ichida (Vite 7 gacha, tsx, ko'p CLI'lar). O'zi ham to'liq ishlaydi:
npx esbuild src/main.ts --bundle --minify --format=esm --outdir=out out\main.js 320b
out\main.css 71b
Done in 33msCSS'ni ham yig'di. Cheklovlari: HTML'ni tushunmaydi, dev server sodda, code splitting faqat ESM formatida. Kichik skriptlar, Node uchun yig'ish, tez prototip — juda qulay.
3.3 webpack, Rspack va Rsbuild
webpack — oldingi darsda o'qidik: eng katta ekotizim, eng ko'p eski loyiha. 5.111.1 (2026-09-18) — faol qo'llab-quvvatlanadi, lekin yangi loyihalar uchun kam tanlanadi.
Rspack — ByteDance (TikTok kompaniyasi) jamoasining Rust'dagi bundleri. Asosiy g'oyasi — webpack bilan moslik: entry, module.rules, plugins — o'sha shakl, ko'p webpack plaginlari va loader'lari ishlaydi. 1.0 — 2024-yil avgust, 2.0 — 2026-yil aprel, hozir 2.2.8. Katta webpack loyihasini Vite'ga to'liq ko'chirish qimmat bo'lsa — Rspack'ga o'tish config'ni deyarli o'zgartirmaydi. Biz o'lchovda babel-loader o'rniga Rspack'ning ichki builtin:swc-loader idan foydalandik:
// rspack.config.mjs — webpack bilan bir xil shakl, loader esa Rust'da
export default {
mode: "production",
entry: "./src/main.ts",
target: ["web", "es2022"],
output: { path: process.cwd() + "/out-rspack", clean: true },
resolve: { extensions: [".ts", ".js"] },
module: {
rules: [
{
test: /\.ts$/,
loader: "builtin:swc-loader",
options: {
jsc: { parser: { syntax: "typescript" }, target: "es2022" },
},
type: "javascript/auto",
},
],
},
};webpack config'idan tanish, to'g'rimi? Rsbuild — Rspack ustidagi tayyor vosita (Vite'ga o'xshash: sozlamasiz dev va build).
3.4 Turbopack
Turbopack — Vercel'ning (Next.js egasi) Rust'dagi bundleri. Mustaqil vosita sifatida tarqatilmaydi: u Next.js ichida yashaydi. Next.js 16 (2025-yil oktabr) uni dev va build uchun sukut bundler qildi. Ya'ni Next.js loyihasida ishlasangiz, Turbopack bilan ishlayapsiz — next.config.js orqali. 23-qismda ko'ramiz.
3.5 Parcel, Bun va kutubxona vositalari
- Parcel — "nol sozlama" g'oyasining kashshofi (2017):
parcel index.htmlva tamom. Hozir 2.16.4; yuklanishlar kam (pastdagi grafikka qarang). - Bun — Node'ga muqobil JavaScript runtime'i, ichida o'z bundleri bor:
bun build ./src/main.ts --outdir out(rasmiy hujjatdan; biz Bun'ni o'rnatmadik — kurs Node 24'da). Bun haqida — Yarn va Bun. - tsup va tsdown — kutubxona yig'ish uchun:
.d.tsturlarini, ESM va CJS formatlarini,package.jsondagiexportsni bir buyruqda. tsup README'sida: "This project is not actively maintained anymore. Please consider using tsdown instead" — "Loyiha faol qo'llab-quvvatlanmaydi, tsdown'ni ko'ring". Vosita tsdown (0.23.0) — Rolldown ustida, npm tavsifi "The Elegant Bundler for Libraries". Vite V dagi library mode'dan farqi — turlar vaexportsham qamrab olinadi.
3.6 Vite+ — butun zanjir bitta vositada
Vite+ (vite-plus paketi, MIT) — VoidZero'ning "yagona asboblar zanjiri": 1.0 versiyasi 2026-yil 28-sentabrda chiqdi (npm view vite-plus time), 1.1.0 — 7-oktabr. README'sidan: u Vite, Vitest, Oxlint, Oxfmt, Rolldown, tsdown va Vite Task'ni bitta vp buyrug'iga birlashtiradi: vp dev, vp check (format, lint, tur), vp test, vp build, vp pack (kutubxona). Config — o'sha vite.config.ts, faqat import { defineConfig } from "vite-plus".
Bu — Frontend asboblar zanjiri dagi halqalarni bitta kompaniya vositalari bilan to'ldirish urinishi. Biz kursda zanjirni alohida-alohida o'rgandik — har halqani tushunasiz, shuning uchun Vite+ ni ham tushunasiz. 1.0 — bir necha kunlik; ommalashadimi — vaqt ko'rsatadi.
3.7 Dvigatel ichidagi dvigatellar: Oxc, SWC, Lightning CSS
Bundler — bitta dastur emas, bir nechta qatlam. Eng pastda parser (kodni AST'ga aylantiradi), transformer (TS va JSX'ni olib tashlaydi, sintaksisni eskiroq brauzerga moslaydi) va minifikator turadi. Bu qatlamlar alohida loyihalar sifatida yashaydi va turli bundlerlar ularni qayta ishlatadi:
| Qatlam vositasi | Til | Qayerda ishlaydi |
|---|---|---|
| Oxc | Rust | Rolldown va Vite 8 ichida; Oxlint (linter), Oxfmt (formatlagich) |
| SWC | Rust | Rspack ichida, Next.js'da, plugin-react-swc |
| esbuild | Go | o'zi bundler ham, Vite 7 gacha transformer ham |
| Lightning CSS | Rust | Vite 8 da CSS'ni o'giradi va siqadi |
Shuning uchun "Vite 8 tez" deganda aslida "Rolldown va Oxc tez" deyiladi. Bu qatlamlarni Transpilyatsiya darsida ko'rgansiz. Xuddi shu Oxc linter sifatida ham bor — ESLint'ning Rust'dagi muqobili (Biome va Oxlint). Ya'ni bitta parser bir nechta vositaga xizmat qiladi: kod bir marta tahlil qilinadi, natijadan har vosita foydalanadi. Kelajakdagi "yagona zanjir" (Vite+) g'oyasi ham shundan.
Tekshirib ko'ring: Vite+ chiqdi.
vazifalarni hoziroq unga ko'chirish kerakmi?
Javob
Shoshilmang. Vite+ 1.0 bir necha kunlik (2026-09-28). vazifalar dagi har asbob (Vite, node:test, ESLint, Prettier) ishlayapti va tekshirilgan. Yangi vositaga o'tish — xatarlar: hujjatdagi bo'shliqlar, ekotizim plaginlari bilan moslik. Kursning qoidasi — "har asbob o'z narxini oqlaydimi?" (Frontend asboblar zanjiri). Vite+ ni alohida tajriba loyihasida sinab ko'rish — yaxshi g'oya; kanon loyihani esa barqaror vositalarda qoldiramiz.
Tekshirib ko'ring: "Turbopack Vite'dan tezmi?" degan savolni o'lchov bilan tekshirib bo'ladimi?
Javob
To'g'ridan-to'g'ri — qiyin. Turbopack mustaqil vosita emas: uni faqat Next.js ichida, Next.js loyihasi bilan ishlatasiz. Vite esa boshqa freymvorklar bilan. Ikki xil loyihani taqqoslash — olma bilan nokni tortish. Shuning uchun real tanlovda savol boshqacha qo'yiladi: "Next.js kerakmi?" — ha bo'lsa, Turbopack o'zi keladi.
4. Raqamlar: kim qancha ishlatiladi
npm statistikasi (api.npmjs.org, 2026-09-29…10-05 haftasi, yuklanishlar):
- esbuild357,8 mln
- vite232 mln
- rolldown130,1 mln
- rollup126,9 mln
- webpack66,4 mln
- @rspack/core10,3 mln
- parcel0,38 mln
Manba: api.npmjs.org/downloads/point/2026-09-29:2026-10-05/<paket>, 2026-10-10 da olindi
| Paket | Haftalik yuklanish |
|---|---|
| esbuild | 357.8 mln |
| vite | 232.0 mln |
| rolldown | 130.1 mln |
| rollup | 126.9 mln |
| Paket | Haftalik yuklanish |
|---|---|
| next | 76.7 mln |
| webpack | 66.4 mln |
| tsup / tsdown | 11.1 / 5.1 mln |
| @rspack/core | 10.3 mln |
| vite-plus | 2.6 mln |
| parcel | 0.38 mln |
Bu raqamlarni o'qishda ehtiyot bo'ling:
- Yuklanish ≠ foydalanuvchi. Har CI ishga tushishi, har
npm ci— yangi yuklanish. Katta kompaniyaning bitta loyihasi kuniga yuzlab marta yuklashi mumkin. - Ichki bog'liqliklar. esbuild birinchi o'rinda, chunki uni yuzlab boshqa vosita (Vite 7 va undan eski, tsx, Storybook) o'zi o'rnatadi. Rolldown'ning 130 mln i — asosan Vite 8 ichida. rollup ham hali ko'p: Vite 7 va eski loyihalar.
- Turbopack jadvalda yo'q — u
nextpaketining ichida.
Xulosa: ekotizim Vite atrofida jamlangan, webpack hali katta (eski loyihalar), Rust vositalari tez o'smoqda.
5. Tezlik: o'zimiz o'lchadik
5.1 Usul
Bundler'lar "X marta tez" deb reklama qiladi — har biri o'zi tanlagan loyihada. Halol yo'l — o'z loyihangizda o'lchash. Sinov loyihasi: yasa.mjs skripti 30 ta "bo'lim" va har birida 50 ta modul yaratdi (har modulda interfeys, funksiya, #private maydonli klass) — jami 1 531 ta .ts fayl. Har vosita 5 marta, butun jarayon vaqti (Node'dan to'g'ridan-to'g'ri, npx siz), mediana. Hammasi minifikatsiya bilan.
Mashina: Intel Core i5-12500H (16 ip), 16 GB, Windows 11, Node 24.21.0.
| Vosita (versiya) | Mediana | 5 o'lchov, ms |
|---|---|---|
| esbuild 0.28.2 | 0.26 s | 238, 253, 260, 299, 315 |
| Rolldown 1.2.12 | 0.27 s | 265, 268, 270, 280, 288 |
| Rspack 2.2.8 | 0.40 s | 365, 385, 398, 448, 450 |
| Vite 8.3.3 | 0.50 s | 456, 459, 500, 515, 545 |
| webpack 5.111.1 + Babel 8 | 7.57 s | 7442, 7512, 7568, 7647, 7841 |
- esbuild 0.28.20,26 s
- Rolldown 1.2.120,27 s
- Rspack 2.2.80,4 s
- Vite 8.3.30,5 s
- webpack 5 + Babel7,57 s
Manba: O'lchandi: i5-12500H, 16 GB, Windows 11, Node 24.21.0, 2026-10-10
5.2 Natijani o'qish
- Rust/Go to'rtligi bir guruhda: 0.26–0.50 s. Ular orasidagi farq bu loyihada ahamiyatsiz.
- Vite Rolldown'dan sekinroq — chunki u ko'proq ish qiladi:
index.htmlni o'qiydi, CSS bosqichi, gzip hajmini hisoblaydi,modulepreloadpolyfill'ini qo'shadi. Dvigatel bir xil. - webpack + Babel — 7.6 s. Bu loyihada Rspack'dan taxminan 19 baravar sekin. Asosiy sabab —
babel-loader: har fayl JavaScript'da alohida tahlil qilinadi va o'giriladi.
Halol cheklovlar: loyiha sun'iy (bir xil shakldagi modullar), vaqtning bir qismi — Node va vositaning ishga tushishi; real loyihada nisbatlar boshqa bo'ladi. Va mashina yuki muhim: xuddi shu o'lchovni boshqa paytda (kompyuterda boshqa ishlar bor edi) takrorlaganimizda hamma natija qariyb ikki baravar oshdi (esbuild 0.47 s, Vite 1.01 s), lekin tartib o'zgarmadi. Shuning uchun bitta raqamga emas, mediana va tartibga qarang. Natija fayllar hajmini esa bu sun'iy loyihada solishtirmadik — bir xil kod juda yaxshi siqiladi va raqam aldaydi.
Tekshirib ko'ring: Hamkasbingiz
vite buildni bir marta ishga tushirib, 1.2 s oldi, Rspack'ni ham bir marta — 0.9 s. "Rspack tezroq ekan" demoqda. Bu xulosa ishonchlimi?
Javob
Yo'q. Bitta o'lchov tasodifiy: birinchi ishga tushishda disk keshi sovuq, fonda antivirus yoki boshqa dastur ishlashi mumkin (bizning o'lchovlarimizda ham bitta qiymat qolganlaridan 3–4 baravar katta chiqdi). Kamida 5 marta, mediana, bir xil mashina va bir xil yuk. Bundan tashqari, 0.3 s farq kundalik ishda sezilmaydi — tanlovni ekotizim, plaginlar va jamoa tajribasi hal qiladi.
6. Qachon nima: tanlov jadvali
| Vaziyat | Tanlov |
|---|---|
| Yangi SPA (React, Vue, vanilla) | Vite |
| Next.js loyiha | Turbopack (Next.js ichida) |
| Katta eski webpack loyiha, tezlik kerak | Rspack (yoki Vite'ga to'liq ko'chish) |
| npm kutubxona | tsdown |
| Vaziyat | Tanlov |
|---|---|
| Node skript yoki CLI'ni bitta faylga yig'ish | esbuild |
| Bitta vosita bilan butun zanjir | Vite+ (yangi) |
| O'qish va kichik demo | Vite yoki Parcel |
vazifalar uchun javob — Vite: biz uni Bundler nima darsidan beri ishlatyapmiz, va 17-qismdagi React ham Vite bilan.
7. Ko'p uchraydigan xatolar
7.1 Benchmark reklamasiga ishonish
"10 baravar tez" — muallifning loyihasida, muallifning mashinasida. O'z loyihangizda o'lchang (3-mashq).
7.2 Tezlik uchun ko'chish
Build 20 s dan 2 s ga tushdi — yaxshi. Lekin ko'chish bir hafta oldi, ikki plagin ishlamay qoldi. Tezlik — mezonlardan biri, yagonasi emas.
7.3 Vositalarni aralashtirish
Rolldown'ga to'g'ridan-to'g'ri CSS berish — xato (yuqoridagi UNSUPPORTED_FEATURE). Har vosita o'z vazifasiga: ilova — Vite orqali.
8. Mashqlar
1-mashq (oson): Vosita va uyi
Har vositani tavsifga moslang: Rolldown, Turbopack, Rspack, esbuild, tsdown.
- Next.js ichida, mustaqil tarqatilmaydi —
- webpack config'ini tushunadi, Rust'da —
- Vite 8 ning dvigateli —
- Go'da yozilgan, ko'p vositalar ichida —
- Kutubxona va
.d.tsuchun —
Yechim
1 — Turbopack, 2 — Rspack, 3 — Rolldown, 4 — esbuild, 5 — tsdown. Agar adashgan bo'lsangiz — «Asosiy vositalar» bo'limidagi "uy" so'ziga qarang: har vositaning kim yaratgani va kim ishlatishi uning o'rnini aytadi.
2-mashq (o'rta): esbuild va Vite — bir loyiha
bahor-menyu da (darsdagi): npx esbuild src/main.ts --bundle --minify --format=esm --outdir=out va npx vite build. Solishtiring: qaysi fayllar chiqdi, index.html bormi, hash bormi?
Yechim
esbuild: out/main.js (320 b) va out/main.css (71 b) — hash yo'q, HTML yo'q. index.html ni o'zingiz yozib, ikki faylni qo'lda ulashingiz kerak. Vite: dist/index.html (fayllar avtomatik ulangan), assets/index-<hash>.js, assets/index-<hash>.css. Vite esbuild'dan "ko'proq" — sayt uchun tayyor natija beradi. esbuild — tez dvigatel, Vite — to'liq oshxona.
3-mashq (qiyin): O'z o'lchovingiz
kurs/mashqlar/16/34-landshaft/ da: npm i -D -E vite@8.3.3 esbuild@0.28.2 rolldown@1.2.12 @rspack/core@2.2.8 @rspack/cli@2.2.8. Darsdagi yasa.mjs bilan sinov loyihasini yarating, keyin har vositani 5 marta ishga tushiring va mediana chiqaring (node:child_process dagi spawnSync, performance.now()). Jadvalga mashinangiz ma'lumotini ham yozing (os.cpus(), os.totalmem()).
Ishora: Performansni o'lchash darsidagi qoidalar — isitish, bir necha marta, mediana.
Yechim
olcha.mjs:
// olcha.mjs — har bundler 5 marta, mediana (devor soati)
import { spawnSync } from "node:child_process";
import { cpus, totalmem } from "node:os";
const node = process.execPath;
const runs = {
esbuild: [node, "node_modules/esbuild/bin/esbuild", "src/main.ts",
"--bundle", "--minify", "--format=esm", "--outdir=out-esbuild"],
rolldown: [node, "node_modules/rolldown/bin/cli.mjs", "src/main.ts",
"--minify", "-d", "out-rolldown"],
"vite build": [node, "node_modules/vite/bin/vite.js", "build",
"--outDir", "out-vite", "--logLevel", "silent"],
rspack: [node, "node_modules/@rspack/cli/bin/rspack.js", "build",
"-c", "./rspack.config.mjs"],
};
const cpu = cpus();
console.log(cpu[0].model, cpu.length, "ip,",
Math.round(totalmem() / 2 ** 30), "GB, Node", process.version);
for (const [name, [cmd, ...args]] of Object.entries(runs)) {
const times = [];
for (let i = 0; i < 5; i++) {
const start = performance.now();
const result = spawnSync(cmd, args, { stdio: "ignore" });
if (result.status !== 0) throw new Error(`${name}: xato`);
times.push(performance.now() - start);
}
times.sort((a, b) => a - b);
console.log(name.padEnd(12), "mediana", Math.round(times[2]), "ms");
}spawnSync — dasturni ishga tushirib, tugashini kutadi (child_process — backend qismida chuqur). stdio: "ignore" — chiqishini ko'rsatmaydi (vaqtga ta'sir qilmasin). Bizning ikkinchi o'lchovimiz (kompyuter band paytda): esbuild 465 ms, Rolldown 514 ms, Rspack 777 ms, Vite 1 012 ms — birinchisidan ikki baravar ko'p, tartib esa o'sha. Sizning raqamlaringiz boshqacha bo'ladi — muhimi usul va tartib.
9. Real ishda
- Vakansiyada "webpack" — eski loyiha bor demak; "Vite" — yangi; "Rspack" — kompaniya katta webpack loyihasini tezlashtirgan; "Turbopack" — Next.js.
- Monorepo'larda bir nechta vosita yonma-yon: ilovalar — Vite, kutubxonalar — tsdown, server — esbuild bilan bitta faylga.
- Intervyu savollari: "Nega Rust asosidagi vositalar tez?", "Vite 8 da nima o'zgardi?" (Rollup va esbuild o'rniga Rolldown), "Kutubxona uchun qaysi vosita?".
Xulosa
- Uch davr: JavaScript bundlerlar (webpack, Rollup) → esbuild (Go) → Rust (Turbopack, Rspack, Rolldown). Sabab — tezlik: mashina kodi, ko'p yadro, bitta AST.
- Vite 8 = Rolldown + Oxc + Lightning CSS; esbuild — faqat ixtiyoriy. Rolldown — dvigatel, Vite — dev server, HTML, CSS bilan to'liq vosita.
- Turbopack — Next.js ichida, Rspack — webpack bilan mos, tsdown — kutubxonalar (tsup o'rniga), Vite+ — yagona zanjir (1.0, 2026-09-28).
- O'lchovimiz (1 531 modul): esbuild 0.26 s, Rolldown 0.27, Rspack 0.40, Vite 0.50, webpack + Babel 7.57 s. Yuklanish va benchmark raqamlarini manbasi va sharti bilan o'qing.
Keyingi dars: SVG va ikonka pipeline — SVG'ni fayl, inline yoki sprite sifatida ulash, SVGO bilan kichraytirish va vazifalar dagi ikonka.
Manbalar
- Vite 8 e'loni va migratsiya — vite.dev/blog, vite.dev/guide/migration (Vite 8.0.0 — npm'da 2026-03-12)
- Rolldown — rolldown.rs; Rspack/Rsbuild — rspack.rs; esbuild — esbuild.github.io; Turbopack — nextjs.org/docs
- Vite+ — viteplus.dev (vite-plus 1.0.0 — npm'da 2026-09-28); tsdown — tsdown.dev
- npm yuklanish statistikasi: api.npmjs.org/downloads/point/2026-09-29:2026-10-05/
- O'lchov:
olcha.mjs, i5-12500H, Windows 11, Node 24.21.0, 2026-10-10
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!