Mundarija (26)
- Bu darsda
- 1. Nega bu kerak?
- 2. npm create vite
- 2.1 Loyiha yaratish
- 2.2 Ichida nima bor
- 2.3 index.html — entry
- 2.4 React shabloni — kelajakka nazar
- 3. Nega tez
- 3.1 Bir zumda ishga tushish
- 3.2 Dev va preview: so'rovlar soni
- 4. Dependency pre-bundling
- 4.1 Muammo: yuzlab fayl
- 4.2 Yechim: bir marta, oldindan
- 5. HMR: issiq almashtirish
- 5.1 CSS — sahifa yangilanmaydi
- 5.2 TS modul — sahifa qayta yuklandi
- 6. vite preview
- 7. Ko'p uchraydigan xatolar
- 8. Mashqlar
- 1-mashq (oson): Shablonni o'qing
- 2-mashq (o'rta): HMR va reload
- 3-mashq (qiyin): 40 qatorlik "mini Vite"
- 4-mashq: Vazifalar qadami — dev va preview
- 9. Real ishda
- Xulosa
- Manbalar
Vite I: nega tez va loyiha yaratish — npm create vite, dev server, HMR va preview
Qisqacha: Vite — dev server va build vositasi. Dev rejimda u loyihani oldindan yig'maydi: brauzer qaysi modulni so'rasa, faqat o'shani o'sha zahoti o'giradi (brauzer ESM'ni o'zi tushunadi). Shuning uchun katta loyihada ham server ~0.2 soniyada ishga tushadi.
node_modulesdagi paketlarni esa bir marta oldindan yig'adi (pre-bundling) — yuzlab fayl o'rniga bitta so'rov. Fayl saqlanganda HMR faqat o'zgargan modulni almashtiradi. Yangi loyiha —npm create vite@latest, build natijasini tekshirish —vite preview.vazifalarga bugunnpm run devvanpm run previewqo'shiladi.
Bu darsda
npm create vitebilan loyiha yaratasiz va shablon ichidagi har faylni o'qiysiz.- Vite dev server nega tez ekanini o'lchovlar bilan tushuntirasiz.
- Dependency pre-bundling nima ekanini va u bo'lmasa nima bo'lishini (654 ta so'rov) ko'rasiz.
- HMR qachon modulni almashtiradi, qachon sahifani qayta yuklaydi — farqini bilasiz.
vite previewva dev server farqini bilib,vazifalarga ikkala skriptni qo'shasiz.
Oldin bilishingiz kerak: Bundler nima, npx va npm create, Code splitting va hash bilan keshlash, Brauzerda ESM va import maps.
1. Nega bu kerak?
16-qismning bundler blokida (20–25) Vite'ni build vositasi sifatida ishlatdik: graf, chunk, tree shaking, source map, hash. Lekin Vite'ning nomi — fransuzcha "tez" — boshqa narsadan kelgan: dasturchi kod yozayotgandagi tezlik.
Vite'dan oldingi bundlerlar (webpack) dev rejimida ham butun loyihani yig'ardi. Katta loyihada npm start dan keyin bir daqiqa kutish oddiy hol edi. Faylni saqlagach ham — yana bir necha soniya. 2020-yilda Evan You (Vue muallifi) boshqa yo'l taklif qildi: brauzerlar endi ESM'ni o'zi tushunadi — dev'da yig'ish shart emas.
Asboblar zanjiri darsida dev server'ni oldindan ko'rgan edik. Ikki va'da ham bor: npm buyruqlari darsida "Vite'ni Vite I darsida o'rnatamiz", package.json I darsida esa "shablonni o'zimiz yaratamiz" degan edik. vazifalar ga Vite Bundler nima darsida o'rnatildi. Bugun — yangi loyiha yaratish va dev server.
Hayotiy o'xshatish: ikki oshxona. Birinchisi ertalab menyudagi hamma taomni tayyorlab qo'yadi — ochilishi kech, lekin buyurtma darhol beriladi (eski bundler). Ikkinchisi tayyor masalliqlar bilan ochiladi va har taomni buyurtma kelganda pishiradi — eshik darhol ochiladi (Vite dev). Restoranga (production) esa baribir hammasi oldindan tayyorlanadi — vite build.
Maslahat: Chiqishlar 2026-10-10 da Node 24.21.0, create-vite 9.2.1 va Vite 8.3.4 bilan olingan. Shablon
^8.3.0yozadi, shu kuni eng yangisi — 8.3.4. Brauzer o'lchovlari — Chrome 154 (headless).vazifalarqadami — kanon chiqishlari (Vite 8.3.3).ready invaqti va portlar sizda boshqacha bo'ladi.
2. npm create vite
2.1 Loyiha yaratish
npx va npm create darsidan bilasiz: npm create vite — create-vite paketini yuklab ishga tushiradi. Terminalda interaktiv savollar beradi (nom, framework, til). Hammasini bitta qatorda ham berish mumkin:
npm create vite@9.2.1 bahor-menyu -- \
--template vanilla-ts --no-interactive> npx
> create-vite bahor-menyu --template vanilla-ts --no-interactive
│
◇ Scaffolding project in …\bahor-menyu...
│
└ Done. Now run:
cd bahor-menyu
npm install
npm run dev-- — "bundan keyingisi npm ga emas, create-vite ga" (scripts chuqur darsidagi argument uzatish). vanilla-ts — framework'siz TypeScript. Boshqa shablonlar (npx create-vite@9.2.1 --help ro'yxati): vanilla, vue-ts, react-ts, react-compiler-ts, preact-ts, lit-ts, svelte-ts, solid-ts, qwik-ts va ularning JavaScript variantlari.
2.2 Ichida nima bor
bahor-menyu/
├── .gitignore
├── index.html
├── package.json
├── tsconfig.json
├── public/
│ ├── favicon.svg
│ └── icons.svg
└── src/
├── main.ts
├── counter.ts
├── style.css
└── assets/ hero.png, typescript.svg, vite.svgpackage.json:
{
"name": "bahor-menyu",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"preview": "vite preview"
},
"devDependencies": {
"typescript": "~6.0.2",
"vite": "^8.3.0"
}
}Tanish narsalar ko'p:
| Maydon | Qayerdan tanish |
|---|---|
"private": true, "version": "0.0.0" |
package.json I: sayt nashr qilinmaydi |
"type": "module" |
package.json I, Modul formatlari |
"build": "tsc && vite build" |
vazifalar dagi bilan bir xil: avval tekshirish, keyin yig'ish |
"vite": "^8.3.0" |
Semver: npm install 8.3.4 ni o'rnatdi |
"typescript": "~6.0.2" |
TS 6 — shablon hali TS 7 ga o'tmagan |
^8.3.0 ga e'tibor bering: npm install dan keyin npm ls — vite@8.3.4. 8.3.4 2026-10-08 da chiqqan. vazifalar da esa aniq "vite": "8.3.3" — loyihangiz qachon o'rnatilganiga qarab versiya "suzmaydi" (Lock-fayllar).
tsconfig.json — tsconfig darsidan tanish bayroqlar: "noEmit": true (tsc faqat tekshiradi), "moduleResolution": "bundler", "allowImportingTsExtensions": true, "verbatimModuleSyntax": true, "erasableSyntaxOnly": true — aynan vazifalar ga 15–16-qismda qo'yganlarimiz. "types": ["vite/client"] — Vite'ning qo'shimcha turlari (import.meta.env, rasm importlari) — Vite III darsida.
2.3 index.html — entry
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport"
content="width=device-width, initial-scale=1.0" />
<title>bahor-menyu</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>Vite'da index.html — kirish nuqtasi, va u loyiha ildizida turadi (public/ da emas). webpack'da entry JS fayl edi, HTML esa shablon sifatida keyin yasalardi. Vite'da teskari. HTML'dagi <script type="module" src="/src/main.ts"> — grafning boshlanishi (Bundler nima darsidagi graf). Esingizda bo'lsa, Skriptlarni ulash darsida "Vite HTML'ga type="module" li skriptni yozadi" degan edik — mana o'sha qator. .ts manzilni brauzer to'g'ridan-to'g'ri so'raydi — dev server uni JS qilib beradi.
2.4 React shabloni — kelajakka nazar
17-qismda react-ts shablonidan boshlaymiz. Uning package.json ida react, react-dom, @vitejs/plugin-react 6.1-bob, oxlint va "build": "tsc -b && vite build"; ildizida vite.config.ts, tsconfig.app.json, tsconfig.node.json, .oxlintrc.json. Yana bir yangilik: create-vite 9.2.1 React shablonlarida sukut bo'yicha ESLint o'rniga Oxlint (Biome va Oxlint darsida) qo'yadi — --eslint bayrog'i ESLint'ni qaytaradi. tsconfig ning app/node ga bo'linishini tsconfig: app/node darsida vazifalar ga ham qilamiz. Bugun bu fayllarni faqat taniymiz.
Tekshirib ko'ring: Nega Vite'da
index.htmlpublic/papkasida emas, ildizda?
Javob
Chunki u manba fayl — grafning boshi. Vite uni o'qiydi va <script>, <link> larni topadi. Build'da ularni hash'li nomlarga almashtirib qayta yozadi. public/ dagi fayllar esa grafga kirmaydi — o'zgarishsiz ko'chiriladi (Bundler nima darsidagi sw.js, manifest). index.html public/ da bo'lsa, Vite uni qayta yozmasdi va src/main.ts brauzerga xom holda borardi.
3. Nega tez
3.1 Bir zumda ishga tushish
npm run dev VITE v8.3.4 ready in 187 ms
➜ Local: http://localhost:5761/
➜ Network: use --host to expose187 ms — va hali biror fayl o'girilmagan. Vite faqat serverni ochdi. Brauzer sahifani ochganda nima so'radi? Chrome 154 da sahifani ochib, so'rovlarni yozib oldik (puppeteer bilan; rasm va ikonlarni olib tashladik):
/ /@vite/client /src/main.ts /src/style.css /src/counter.ts
/node_modules/vite/dist/client/env.mjsHar modul — alohida so'rov, .ts nomi bilan. Brauzer main.ts ni oldi, ichidagi import './counter.ts' ni ko'rdi va uni so'radi — Vite har birini o'sha daqiqada o'girib berdi. Bu "on-demand" (talab bo'yicha) o'girish: 1000 ta modulli loyihada ham server faqat ochilgan sahifaga kerakli modullarni o'giradi.
sequenceDiagram
participant B as Brauzer
participant V as Vite dev
B->>V: GET /src/main.ts
V->>V: Oxc: faqat main.ts ni o'giradi
V-->>B: JS (import "/src/counter.ts")
B->>V: GET /src/counter.ts
V-->>B: JS
Note over V: boshqa fayllar —<br/>so'ralmaguncha tegilmaydiIkki sababi bor: brauzer ESM'ni o'zi tushunadi — modullarni bog'lash ishini brauzerga beramiz (Brauzerda ESM). Va Oxc tez — bitta faylni o'girish millisekundlar (Transpilyatsiya darsidagi o'lchov: 19 fayl ~3 ms).
/@vite/client — Vite'ning brauzerdagi qismi: u dev server bilan WebSocket orqali bog'lanadi va HMR'ni boshqaradi. Konsolda [vite] connecting... va [vite] connected. — uning xabarlari.
3.2 Dev va preview: so'rovlar soni
Xuddi shu sahifani build'dan keyin vite preview bilan ochdik:
| Rejim | Hamma so'rovlar | Shundan JS |
|---|---|---|
npm run dev |
14 | 4 (@vite/client, main.ts, counter.ts, env.mjs) |
npm run preview (dist/) |
8 | 1 (index-wktXvZw9.js) |
Dev'da ko'p so'rov — lokal kompyuterda bu sezilmaydi (tarmoq yo'q). Production'da esa har so'rov — kutish, shuning uchun u yerda bundle. Bitta vosita — ikki strategiya.
4. Dependency pre-bundling
4.1 Muammo: yuzlab fayl
Ilova kodi bilan hammasi yaxshi. node_modules dagi paketlar bilan esa ikki muammo bor: ba'zilari CommonJS (brauzer o'qimaydi — Modul formatlari), ba'zilari esa ESM, lekin yuzlab faylga bo'lingan. Masalan, lodash-es: har funksiya — alohida fayl.
main.ts ga bitta qator qo'shdik: import { sum } from "lodash-es";. Va ikki xil o'lchadik:
| Dev server | Sahifa so'rovlari |
|---|---|
| pre-bundling bilan (sukut) | 15 |
optimizeDeps: { exclude: ["lodash-es"] } |
654 |
exclude — "bu paketni oldindan yig'ma". Natija: brauzer lodash-es/lodash.js ni oldi, u 600 dan ortiq modulni import qiladi, ular yana boshqalarni... Sahifa ochilishi o'nlab soniyaga cho'zilishi mumkin.
4.2 Yechim: bir marta, oldindan
Sukut bo'yicha Vite birinchi ishga tushishda node_modules dan import qilingan paketlarni bitta faylga yig'adi. Dev server logida:
[vite] (client) [optimizer] bundling dependencies...Natija node_modules/.vite/deps/ papkasida:
_metadata.json
lodash-es.js
lodash-es.js.map
package.jsonBrauzer endi /node_modules/.vite/deps/lodash-es.js ni — bitta faylni — so'raydi. Pre-bundling ("oldindan yig'ish") ikki ish qiladi: CommonJS'ni ESM'ga o'giradi va ko'p faylni bittaga birlashtiradi. U faqat paketlar uchun — ular kam o'zgaradi, shuning uchun natija keshlanadi. _metadata.json dagi lockfileHash — lock-fayl o'zgarsa (yangi paket), Vite qayta yig'adi. Majburan qayta yig'ish — npx vite --force.
vazifalar da ham shunday: kanon dev sinovida web-vitals /node_modules/.vite/deps/web-vitals.js?v=9e4c595f dan keldi. ?v=… — kesh uchun versiya belgisi.
Tekshirib ko'ring: Nega Vite o'zingiz yozgan
src/kodini ham oldindan bitta faylga yig'maydi? Axir so'rovlar kamayardi.
Javob
Chunki src/ doim o'zgaradi. Har saqlashda bitta katta faylni qayta yig'ish — aynan eski bundlerlarning sekinligi. Alohida modullar bilan esa faqat o'zgargan fayl qayta o'giriladi va HMR faqat uni almashtiradi. Paketlar kam o'zgaradi — ularni bir marta yig'ib, keshlash foydali. Ikki xil narsaga — ikki xil strategiya.
5. HMR: issiq almashtirish
5.1 CSS — sahifa yangilanmaydi
HMR (Hot Module Replacement — modulni issiq almashtirish) — faylni saqlaganingizda o'zgargan modul sahifa qayta yuklanmasdan almashadi: forma ichidagi matn, ochiq modal, hisoblagich — joyida qoladi. Ochiq sahifada style.css ga h1 { color: #2e7d32; } qo'shdik:
20:48:06 [vite] (client) hmr update /src/style.cssBrauzer konsolida — [vite] hot updated: /src/style.css, sarlavha rangi — rgb(46, 125, 50). Sahifa qayta yuklanmadi.
5.2 TS modul — sahifa qayta yuklandi
Endi counter.ts dagi matnni o'zgartirdik (Count is → Hisob:):
20:48:07 [vite] (client) page reload src/counter.tsBu safar — page reload: butun sahifa qayta yuklandi va tugmada Hisob: 0. Nega? HMR modulni almashtirish uchun kimdir "men bu modulning yangi versiyasini qabul qilaman" deyishi kerak — bu HMR chegarasi (boundary). CSS uchun Vite buni o'zi biladi: eski <style> ni olib, yangisini qo'yadi. Oddiy TS modul uchun esa Vite bilmaydi: counter.ts tugmaga hodisa qo'shgan — eski hodisani kim olib tashlaydi? Xavfsiz yo'l — sahifani qayta yuklash.
Framework plaginlari bu chegarani o'zi qo'yadi. 17-qismda @vitejs/plugin-react bilan komponentni o'zgartirsangiz, sahifa yangilanmaydi va komponent holati saqlanadi (React Fast Refresh). Vanilla kodda chegarani qo'lda, import.meta.hot.accept() bilan yozish mumkin — bu kam kerak bo'ladigan ilg'or mavzu.
| Nima o'zgardi | Natija |
|---|---|
CSS (<link> yoki import "./x.css") |
hmr update — joyida |
| framework komponenti (React, Vue) | hmr update — holat saqlanadi |
| oddiy TS/JS modul | page reload |
vite.config.ts |
server qayta ishga tushadi |
6. vite preview
vite preview — dist/ papkasini oddiy statik server bilan beradi. U build qilmaydi: avval npm run build kerak. Maqsadi — production natijasini lokal tekshirish: Asboblar zanjiri darsidagi "dist/index.html ni ikki marta bosib ochish — CORS xatosi" muammosining to'g'ri yechimi.
vite (dev) |
vite preview |
|
|---|---|---|
| Nimani beradi | src/ — so'ralganda o'girib |
dist/ — tayyor fayllar |
| HMR | bor | yo'q |
| Source map | doim (inline) | build'dagidek |
| Sukut port | 5173 | 4173 |
| Qachon | kod yozganda | deploydan oldin tekshirish |
Preview — production server emas: u sarlavhalarni (Cache-Control, gzip) haqiqiy hosting kabi bermaydi. Lekin "build'dan keyin sahifa ishlaydimi?" savoliga — eng tez javob. Bundler nima darsidagi blocking="render" yo'qolishi kabi xatolarni aynan shu bosqichda ushlaysiz.
7. Ko'p uchraydigan xatolar
| Belgi | Sabab | Davosi |
|---|---|---|
Port 5173 is in use |
boshqa Vite ochiq | Vite keyingi portni oladi; qat'iy port — --strictPort |
| dev'da ishlaydi, build'da yo'q | dev o'giradi, lekin tekshirmaydi; build boshqa yo'l | npm run build && npm run preview |
preview — eski sahifa |
build qilinmagan | avval npm run build |
| yangi paket qo'shildi, dev'da g'alati xato | pre-bundling keshi eski | npx vite --force |
| telefondan ochilmaydi | server faqat localhost da |
npx vite --host (faqat ishonchli tarmoqda) |
Oxirgisi haqida: Network: use --host to expose — "tarmoqqa ochish uchun --host". Telefondagi brauzerda sinash uchun qulay, lekin dev server xavfsizlik uchun qurilmagan — jamoat Wi-Fi'da ochmang.
8. Mashqlar
Mashqlar kurs/mashqlar/16/26-vite/ da.
1-mashq (oson): Shablonni o'qing
npm create vite@latest bilan vanilla-ts loyiha yarating va javob bering:
- Entry qaysi fayl:
npm run buildqaysi ikki buyruqni bajaradi:tscvanpm installdan keyinnpm ls viteqaysi versiyani ko'rsatdi va negapackage.jsondagidan farq qiladi?
Yechim
index.html — ildizda, ichida <script type="module" src="/src/main.ts">. build — tsc && vite build. Bizda package.json da ^8.3.0, o'rnatilgani — 8.3.4 (2026-10-10 holatiga): ^ chegarasi 8.x ichida eng yangisini oladi. Siz o'qiyotgan kuni yanada yangirog'i bo'lishi mumkin. Aniq versiya kerak bo'lsa — npm i -D -E vite@8.3.4.
2-mashq (o'rta): HMR va reload
npm run dev ni oching, brauzerda DevTools → Console. Ketma-ket o'zgartiring va har biridan keyin konsol va terminalni yozing:
src/style.css—h1rangi.src/counter.ts— tugma matni.- Tugmani 5 marta bosing, keyin yana
style.cssni o'zgartiring. Hisoblagich nechada qoldi?
Yechim
- Terminal:
[vite] (client) hmr update /src/style.css, konsol:[vite] hot updated: /src/style.css. Sahifa yangilanmadi. - Terminal:
[vite] (client) page reload src/counter.ts. Sahifa to'liq yangilandi, hisoblagich 0 dan. - 5 da qoldi: CSS HMR sahifani qayta yuklamaydi, JavaScript holati saqlanadi. Shu tajribada
counter.tsni o'zgartirsangiz — hisoblagich yana 0 bo'ladi.
3-mashq (qiyin): 40 qatorlik "mini Vite"
Vite'ning asosiy g'oyasini o'zingiz yozing: mini-dev.mjs — node:http server, .ts fayl so'ralganda uni o'sha paytda oxc-transform (0.153.0) bilan JavaScript'ga o'girib, text/javascript sarlavhasi bilan beradi. Qolgan fayllar — o'zgarishsiz. sayt/ papkasida index.html, src/main.ts, src/price.ts — brauzerda «Osh: 35000 so'm» chiqsin.
Ishoralar: startDevServer(root, port) funksiyasi serverni qaytarsin — testda port = 0 (bo'sh port) beriladi va server.address().port dan o'qiladi. transformSync(fayl, kod).code — Transpilyatsiya darsidan. .ts import yo'li bilan yozilishi kerak ("./price.ts") — brauzer aynan shu manzilni so'raydi. Testda fetch bilan (Fetch API) .ts faylni so'rab, sarlavha va turlar o'chganini tekshiring.
Yechim
// mini-dev.mjs — Vite g'oyasi: faylni SO'RALGANDA o'giramiz
import { createServer } from "node:http";
import { readFile } from "node:fs/promises";
import { extname, join } from "node:path";
import { transformSync } from "oxc-transform";
const TYPES = {
".html": "text/html; charset=utf-8",
".js": "text/javascript; charset=utf-8",
".css": "text/css; charset=utf-8",
};
export function startDevServer(root, port = 0) {
const server = createServer(async (req, res) => {
const path = new URL(req.url, "http://x").pathname;
const file = join(root, path === "/" ? "index.html" : path);
try {
let body = await readFile(file, "utf8");
let type = TYPES[extname(file)] ?? "text/plain";
if (extname(file) === ".ts") {
// Faqat shu fayl, shu daqiqada — butun loyiha emas
body = transformSync(file, body).code;
type = TYPES[".js"];
}
res.writeHead(200, { "Content-Type": type });
res.end(body);
} catch {
res.writeHead(404).end();
}
});
return new Promise((resolve) => {
server.listen(port, () => resolve(server));
});
}
// node mini-dev.mjs sayt
if (import.meta.main) {
const server = await startDevServer(process.argv[2] ?? ".", 5790);
console.log(`http://localhost:${server.address().port}/`);
}Testlar (.ts → text/javascript, turlar yo'q; yo'q fayl — 404): ℹ tests 2, ℹ pass 2. Chrome 154 da sahifa so'rovlari:
200 / text/html; charset=utf-8
200 /src/main.ts text/javascript; charset=utf-8
200 /src/price.ts text/javascript; charset=utf-8Va #narx da — Osh: 35000 so'm. Bu — Vite'ning yuragi. Unga yetishmaydiganlar: yalang import ("lodash-es") va pre-bundling, CSS/rasm importi, HMR, kesh, xavfsizlik.
Xavfsizlik haqida: bu server /../../ kabi yo'l bilan papkadan tashqaridagi fayllarni ham berishi mumkin (join uni "to'g'rilab" yuboradi). Faqat lokal sinov uchun! Vite'da buning uchun server.fs cheklovlari bor — loyiha papkasidan tashqari fayllar sukut bo'yicha berilmaydi.
4-mashq: Vazifalar qadami — dev va preview
- Branch:
chore/dev-server - Commit:
chore: npm run dev va npm run preview
package.json dagi scripts ga ikki qator qo'shing. So'ng npm run dev ni oching: ro'yxat chizilyaptimi, konsolda CSP xatosi bormi, CSS o'zgarganda nima bo'ladi? Keyin npm run build && npm run preview.
Yechim
{
"scripts": {
"postbuild": "node skriptlar/qobiq.js",
"dev": "vite",
"preview": "vite preview"
}
}(Qolgan skriptlar o'zgarmagan.) Kanon sinovi — npm run dev (Vite 8.3.3):
VITE v8.3.3 ready in 337 ms
➜ Local: http://localhost:5613/
➜ Network: use --host to exposeSahifada ro'yxat 3 qator, CSP buzilishi 0: @vite/client va hamma modul o'z domenimizdan ('self') keladi. So'rovlar ichida:
200 /@vite/client
200 /assets/css/vazifalar.css
200 /node_modules/.vite/deps/web-vitals.js?v=9e4c595fweb-vitals — pre-bundling'dan. /assets/js/tema.js — 200: fayl aslida tema.ts, Vite .js so'rovini .ts ga o'zi moslab berdi. CSS o'zgartirilganda — [vite] (client) hmr update /assets/css/vazifalar.css, konsolda [vite] css hot updated: /assets/css/vazifalar.css, sahifa qayta yuklanmadi.
npm run preview — dist/ dan: 200 /assets/index-Dvsf2Sj6.js, 200 /assets/olchov-G4bloHwN.js, konsol toza. Bu — 13–15-qismning 159 ta brauzer tekshiruvi ishlaydigan muhitga eng yaqin lokal sinov.
Testlar: 145/145. Brauzer: 159/159. Diff: 1 fayl, +3 −1.
git switch -c chore/dev-server
npm pkg set scripts.dev="vite" scripts.preview="vite preview"
npm run build && npm test
git add package.json
git commit -m "chore: npm run dev va npm run preview"
git push -u origin chore/dev-server
gh pr create --fill
gh pr merge --mergenpm pkg set — package.json ni qo'lda ochmasdan o'zgartiradi (npm buyruqlari darsidan). Commit sarlavhasi — 37 belgi.
9. Real ishda
- Vite — 2026-yilda frontend loyihalarning eng keng tarqalgan vositasi: React (17-qism), Vue, Svelte shablonlari, Vitest (testlash, 22-qism), Storybook — hammasi Vite ustida. Next.js o'z vositasi (Turbopack) bilan ishlaydi — Bundlerlar landshafti darsida solishtiramiz.
- Ishdagi birinchi kun:
npm ci,npm run dev— vavite.config.tsni o'qish (Vite II darsida). - Intervyu savollari: "Vite nega webpack'dan tez?", "Dependency pre-bundling nima?", "HMR qanday ishlaydi?", "
vite previewproduction server bo'la oladimi?".
Xulosa
npm create vite@latest <nom> -- --template <shablon>— loyiha;index.html— ildizdagi entry; skriptlar:dev,build(tsc && vite build),preview.- Dev'da Vite yig'maydi: brauzer so'ragan modulni o'sha paytda Oxc bilan o'giradi — server ~0.2 s da ishga tushadi.
- Pre-bundling
node_modulespaketlarini bir marta yig'adi (node_modules/.vite/deps/):lodash-esbilan 654 o'rniga 15 so'rov; qayta yig'ish —--force. - HMR: CSS va framework komponentlari — joyida almashadi; oddiy TS modul —
page reload. vite preview—dist/ni beradi, build qilmaydi; production server emas, lekin build'ni tekshirishning eng tez yo'li.
Keyingi dars: Vite II: vite.config ni o'qish va yozish — vazifalar ning vite.config.ts ini kalitma-kalit o'qiymiz va defineConfig, root, base, server, build bo'limlarini o'rganamiz.
Manbalar
- Vite: "Getting Started" (
npm create vite, shablonlar), "Why Vite", "Dependency Pre-Bundling", "HMR API", "Features" — vite.dev/guide - Vite: "Server Options" (
server.port,--host,server.fs), "Preview Options" — vite.dev/config - create-vite — github.com/vitejs/vite/tree/main/packages/create-vite
- Evan You, "Vite" e'loni (2020) — github.com/vitejs/vite (README tarixi)
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!