[{"data":1,"prerenderedAt":670},["ShallowReactive",2],{"versions":3,"plugin-litestar-vite":6,"readme-litestar-vite":48},{"v3":4,"v4":5},"3.21.10","4.5.1",{"id":7,"title":8,"body":9,"category":10,"changelog":11,"compatibility":12,"created_at":14,"description":15,"documentation":16,"extension":17,"github":18,"icon":19,"issues":20,"key":21,"latest_version":22,"license":9,"maintainers":23,"meta":28,"monthly_downloads":29,"name":8,"navigation":30,"path":31,"pypi":21,"python_compatibility":32,"python_compatibility_raw":33,"repo":40,"seo":41,"sponsor":42,"stars":43,"stem":44,"type":45,"updated_at":46,"website":16,"__hash__":47},"plugins\u002Fplugins\u002Flitestar-vite.yml","Litestar Vite",null,"UI","https:\u002F\u002Flitestar-org.github.io\u002Flitestar-vite\u002Flatest\u002Fchangelog",{"litestar":13},">=2.22.0","2023-10-04T03:45:35","Vite plugin for Litestar","https:\u002F\u002Flitestar-org.github.io\u002Flitestar-vite\u002F","yml","https:\u002F\u002Fgithub.com\u002Flitestar-org\u002Flitestar-vite","litestar-vite.svg","https:\u002F\u002Fgithub.com\u002Flitestar-org\u002Flitestar-vite\u002Fissues\u002F","litestar-vite","0.26.1",[24],{"name":25,"github":26,"avatar":27},"Cody Fincher","cofin","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F204685?v=4",{},26430,true,"\u002Fplugins\u002Flitestar-vite",{"raw":33,"specifier_set":33,"compatible":34},">=3.10",[35,36,37,38,39],"3.10","3.11","3.12","3.13","3.14","litestar-org\u002Flitestar-vite",{"description":15},false,34,"plugins\u002Flitestar-vite","official","2026-07-06T21:00:43","haSjqJcpdznmQXC4zO8C9Dz4dh8maFwZ7P3icANhAAs",{"id":49,"extension":50,"meta":51,"stem":668,"__hash__":669},"readme\u002Freadmes\u002Flitestar-vite.md","md",{"body":52},{"type":53,"value":54,"toc":657},"minimark",[55,59,64,104,108,144,148,219,260,278,283,286,393,396,407,411,448,452,490,494,565,601,619,623,653],[56,57,58],"p",{},"Litestar Vite connects the Litestar backend to a Vite toolchain. It supports SPA, Template, Inertia, and meta-framework workflows, and it can proxy Vite dev traffic through your ASGI port or run Vite directly.",[60,61,63],"h2",{"id":62},"features","Features",[65,66,67,71,83,94,101],"ul",{},[68,69,70],"li",{},"One-port dev: proxies Vite HTTP + WS\u002FHMR through Litestar on a single ASGI port by default.",[68,72,73,74,78,79,82],{},"Framework-mode support: use ",[75,76,77],"code",{},"mode=\"framework\""," (alias ",[75,80,81],{},"mode=\"ssr\"",") for Astro, Nuxt, and SvelteKit. Litestar proxies everything except your API routes.",[68,84,85,86,89,90,93],{},"Production assets: reads the Vite manifest from ",[75,87,88],{},"public\u002Fmanifest.json"," (configurable) and serves under ",[75,91,92],{},"asset_url",".",[68,95,96,97,100],{},"Type-safe frontends: optional OpenAPI\u002Froutes export plus ",[75,98,99],{},"@hey-api\u002Fopenapi-ts"," via the Vite plugin.",[68,102,103],{},"Inertia support: Inertia v2\u002Fv3 protocol support with session middleware, script-element bootstrap by default, and optional SSR.",[60,105,107],{"id":106},"install","Install",[109,110,115],"pre",{"className":111,"code":112,"language":113,"meta":114,"style":114},"language-bash shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","pip install litestar-vite\nnpm install litestar-vite-plugin\n","bash","",[75,116,117,133],{"__ignoreMap":114},[118,119,122,126,130],"span",{"class":120,"line":121},"line",1,[118,123,125],{"class":124},"s52Pk","pip",[118,127,129],{"class":128},"sGFVr"," install",[118,131,132],{"class":128}," litestar-vite\n",[118,134,136,139,141],{"class":120,"line":135},2,[118,137,138],{"class":124},"npm",[118,140,129],{"class":128},[118,142,143],{"class":128}," litestar-vite-plugin\n",[60,145,147],{"id":146},"quick-start","Quick Start",[109,149,153],{"className":150,"code":151,"language":152,"meta":114,"style":114},"language-python shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","from litestar import Litestar\nfrom litestar_vite import VitePlugin\n\napp = Litestar(plugins=[VitePlugin()])\n","python",[75,154,155,171,183,189],{"__ignoreMap":114},[118,156,157,161,165,168],{"class":120,"line":121},[118,158,160],{"class":159},"s8R28","from",[118,162,164],{"class":163},"sZSNi"," litestar ",[118,166,167],{"class":159},"import",[118,169,170],{"class":163}," Litestar\n",[118,172,173,175,178,180],{"class":120,"line":135},[118,174,160],{"class":159},[118,176,177],{"class":163}," litestar_vite ",[118,179,167],{"class":159},[118,181,182],{"class":163}," VitePlugin\n",[118,184,186],{"class":120,"line":185},3,[118,187,188],{"emptyLinePlaceholder":30},"\n",[118,190,192,195,199,203,206,210,213,216],{"class":120,"line":191},4,[118,193,194],{"class":163},"app ",[118,196,198],{"class":197},"sDfIl","=",[118,200,202],{"class":201},"s3cPz"," Litestar",[118,204,205],{"class":197},"(",[118,207,209],{"class":208},"s1nJG","plugins",[118,211,212],{"class":197},"=[",[118,214,215],{"class":201},"VitePlugin",[118,217,218],{"class":197},"()])\n",[109,220,222],{"className":111,"code":221,"language":113,"meta":114,"style":114},"litestar assets init --template vue\nlitestar assets install\nlitestar run --reload\n",[75,223,224,241,250],{"__ignoreMap":114},[118,225,226,229,232,235,238],{"class":120,"line":121},[118,227,228],{"class":124},"litestar",[118,230,231],{"class":128}," assets",[118,233,234],{"class":128}," init",[118,236,237],{"class":128}," --template",[118,239,240],{"class":128}," vue\n",[118,242,243,245,247],{"class":120,"line":135},[118,244,228],{"class":124},[118,246,231],{"class":128},[118,248,249],{"class":128}," install\n",[118,251,252,254,257],{"class":120,"line":185},[118,253,228],{"class":124},[118,255,256],{"class":128}," run",[118,258,259],{"class":128}," --reload\n",[56,261,262,265,266,269,270,273,274,277],{},[75,263,264],{},"VitePlugin()"," detects development and production behavior without manual ",[75,267,268],{},"VITE_DEV_MODE"," parsing. The effective\n",[75,271,272],{},"litestar run --host\u002F--port"," values are also passed to the frontend environment and ",[75,275,276],{},".litestar.json"," bridge.",[279,280,282],"h3",{"id":281},"optional-granian-native-static-serving","Optional Granian native static serving",[56,284,285],{},"Granian 0.16+ can serve eligible production bundle files before the request enters Python:",[109,287,289],{"className":150,"code":288,"language":152,"meta":114,"style":114},"from litestar import Litestar\nfrom litestar_granian import GranianPlugin\nfrom litestar_vite import VitePlugin\n\napp = Litestar(\n    plugins=[\n        VitePlugin(),\n        GranianPlugin(static=\"auto\"),\n    ]\n)\n",[75,290,291,301,313,323,327,339,348,357,381,387],{"__ignoreMap":114},[118,292,293,295,297,299],{"class":120,"line":121},[118,294,160],{"class":159},[118,296,164],{"class":163},[118,298,167],{"class":159},[118,300,170],{"class":163},[118,302,303,305,308,310],{"class":120,"line":135},[118,304,160],{"class":159},[118,306,307],{"class":163}," litestar_granian ",[118,309,167],{"class":159},[118,311,312],{"class":163}," GranianPlugin\n",[118,314,315,317,319,321],{"class":120,"line":185},[118,316,160],{"class":159},[118,318,177],{"class":163},[118,320,167],{"class":159},[118,322,182],{"class":163},[118,324,325],{"class":120,"line":191},[118,326,188],{"emptyLinePlaceholder":30},[118,328,330,332,334,336],{"class":120,"line":329},5,[118,331,194],{"class":163},[118,333,198],{"class":197},[118,335,202],{"class":201},[118,337,338],{"class":197},"(\n",[118,340,342,345],{"class":120,"line":341},6,[118,343,344],{"class":208},"    plugins",[118,346,347],{"class":197},"=[\n",[118,349,351,354],{"class":120,"line":350},7,[118,352,353],{"class":201},"        VitePlugin",[118,355,356],{"class":197},"(),\n",[118,358,360,363,365,368,370,373,376,378],{"class":120,"line":359},8,[118,361,362],{"class":201},"        GranianPlugin",[118,364,205],{"class":197},[118,366,367],{"class":208},"static",[118,369,198],{"class":197},[118,371,372],{"class":197},"\"",[118,374,375],{"class":128},"auto",[118,377,372],{"class":197},[118,379,380],{"class":197},"),\n",[118,382,384],{"class":120,"line":383},9,[118,385,386],{"class":197},"    ]\n",[118,388,390],{"class":120,"line":389},10,[118,391,392],{"class":197},")\n",[56,394,395],{},"This is an optimization, not a separate application configuration. The Litestar static route stays registered, so\nUvicorn and other ASGI servers serve the same files. Granian automatically falls back to Litestar when assets are\nprotected, customized, missing, or otherwise unsafe to intercept.",[56,397,398,399,406],{},"Native hits bypass ASGI middleware, guards, compression, custom headers, and Python access logging. Keep protected or\ncustomized assets on the Litestar fallback path. See the\n",[400,401,405],"a",{"href":402,"rel":403},"https:\u002F\u002Flitestar-org.github.io\u002Flitestar-vite\u002Flatest\u002Fusage\u002Fproduction.html",[404],"nofollow","production guide"," for the server matrix and\nadvanced configuration.",[60,408,410],{"id":409},"documentation","Documentation",[65,412,413,420,427,434,441],{},[68,414,415,416],{},"Get started: ",[400,417,418],{"href":418,"rel":419},"https:\u002F\u002Flitestar-org.github.io\u002Flitestar-vite\u002Flatest\u002Fusage\u002Findex.html",[404],[68,421,422,423],{},"Framework guides: ",[400,424,425],{"href":425,"rel":426},"https:\u002F\u002Flitestar-org.github.io\u002Flitestar-vite\u002Flatest\u002Fframeworks\u002Findex.html",[404],[68,428,429,430],{},"Inertia: ",[400,431,432],{"href":432,"rel":433},"https:\u002F\u002Flitestar-org.github.io\u002Flitestar-vite\u002Flatest\u002Fframeworks\u002Finertia\u002Findex.html",[404],[68,435,436,437],{},"API reference: ",[400,438,439],{"href":439,"rel":440},"https:\u002F\u002Flitestar-org.github.io\u002Flitestar-vite\u002Flatest\u002Freference\u002Findex.html",[404],[68,442,443,444],{},"Changelog: ",[400,445,446],{"href":446,"rel":447},"https:\u002F\u002Flitestar-org.github.io\u002Flitestar-vite\u002Flatest\u002Fchangelog.html",[404],[60,449,451],{"id":450},"common-commands","Common Commands",[65,453,454,460,466,472,478,484],{},[68,455,456,459],{},[75,457,458],{},"litestar assets init --template \u003Cname>",": scaffold a frontend or framework app",[68,461,462,465],{},[75,463,464],{},"litestar assets install",": install frontend dependencies with the configured executor",[68,467,468,471],{},[75,469,470],{},"litestar assets build",": build production assets",[68,473,474,477],{},[75,475,476],{},"litestar assets serve",": run the frontend toolchain directly",[68,479,480,483],{},[75,481,482],{},"litestar assets generate-types",": export OpenAPI, routes, and Inertia page-prop metadata",[68,485,486,489],{},[75,487,488],{},"litestar assets doctor",": inspect and optionally repair config drift",[60,491,493],{"id":492},"development","Development",[109,495,497],{"className":111,"code":496,"language":113,"meta":114,"style":114},"# Install Python, docs, and JS dependencies; build package artifacts\nmake install && make build\n\n# Run an example app\nuv run litestar --app-dir examples\u002Fvue-inertia assets install\nuv run litestar --app-dir examples\u002Fvue-inertia run\n",[75,498,499,505,521,525,530,550],{"__ignoreMap":114},[118,500,501],{"class":120,"line":121},[118,502,504],{"class":503},"sWuyu","# Install Python, docs, and JS dependencies; build package artifacts\n",[118,506,507,510,512,515,518],{"class":120,"line":135},[118,508,509],{"class":124},"make",[118,511,129],{"class":128},[118,513,514],{"class":197}," &&",[118,516,517],{"class":124}," make",[118,519,520],{"class":128}," build\n",[118,522,523],{"class":120,"line":185},[118,524,188],{"emptyLinePlaceholder":30},[118,526,527],{"class":120,"line":191},[118,528,529],{"class":503},"# Run an example app\n",[118,531,532,535,537,540,543,546,548],{"class":120,"line":329},[118,533,534],{"class":124},"uv",[118,536,256],{"class":128},[118,538,539],{"class":128}," litestar",[118,541,542],{"class":128}," --app-dir",[118,544,545],{"class":128}," examples\u002Fvue-inertia",[118,547,231],{"class":128},[118,549,249],{"class":128},[118,551,552,554,556,558,560,562],{"class":120,"line":341},[118,553,534],{"class":124},[118,555,256],{"class":128},[118,557,539],{"class":128},[118,559,542],{"class":128},[118,561,545],{"class":128},[118,563,564],{"class":128}," run\n",[56,566,567,568,571,572,575,576,575,579,575,582,575,585,575,588,575,591,575,594,597,598,93],{},"Replace ",[75,569,570],{},"vue-inertia"," with any other example app: ",[75,573,574],{},"vue",", ",[75,577,578],{},"react",[75,580,581],{},"svelte",[75,583,584],{},"react-inertia",[75,586,587],{},"htmx",[75,589,590],{},"angular",[75,592,593],{},"astro",[75,595,596],{},"nuxt",", or ",[75,599,600],{},"sveltekit",[56,602,603,604,607,608,611,612,615,616,93],{},"litestar-vite now defaults Inertia apps to script-element bootstrap. Inertia v3 clients use that transport automatically; if you pin Inertia v2, keep ",[75,605,606],{},"createInertiaApp({ defaults: { future: { useScriptElementForInitialPage: true } } })"," aligned in the browser entry and SSR entry when ",[75,609,610],{},"ssr=True"," is enabled, or opt back into the legacy ",[75,613,614],{},"data-page"," path with ",[75,617,618],{},"InertiaConfig(use_script_element=False)",[60,620,622],{"id":621},"links","Links",[65,624,625,632,639,647],{},[68,626,627,628],{},"Docs: ",[400,629,630],{"href":630,"rel":631},"https:\u002F\u002Flitestar-org.github.io\u002Flitestar-vite\u002Flatest\u002F",[404],[68,633,634,635,638],{},"Examples: ",[75,636,637],{},"examples\u002F"," (React, Vue, Svelte, HTMX, Inertia, Astro, Nuxt, SvelteKit, Angular)",[68,640,641,642],{},"Real-world example: ",[400,643,646],{"href":644,"rel":645},"https:\u002F\u002Fgithub.com\u002Flitestar-org\u002Flitestar-fullstack",[404],"litestar-fullstack",[68,648,649,650],{},"Issues: ",[400,651,20],{"href":20,"rel":652},[404],[654,655,656],"style",{},"html pre.shiki code .s52Pk, html code.shiki .s52Pk{--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B}html pre.shiki code .sGFVr, html code.shiki .sGFVr{--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s8R28, html code.shiki .s8R28{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sZSNi, html code.shiki .sZSNi{--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8}html pre.shiki code .sDfIl, html code.shiki .sDfIl{--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF}html pre.shiki code .s3cPz, html code.shiki .s3cPz{--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF}html pre.shiki code .s1nJG, html code.shiki .s1nJG{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sWuyu, html code.shiki .sWuyu{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":114,"searchDepth":135,"depth":135,"links":658},[659,660,661,664,665,666,667],{"id":62,"depth":135,"text":63},{"id":106,"depth":135,"text":107},{"id":146,"depth":135,"text":147,"children":662},[663],{"id":281,"depth":185,"text":282},{"id":409,"depth":135,"text":410},{"id":450,"depth":135,"text":451},{"id":492,"depth":135,"text":493},{"id":621,"depth":135,"text":622},"readmes\u002Flitestar-vite","rX-oI-aq9dRkr1WyZiad8fHZP4SipGb0xUdTX1ZpIcw",1785155663550]