diff --git a/dist/index.mjs b/dist/index.mjs
index da3c97efe7ac0af330f2fd8f286bf7f28d6d1e0b..3ff1e31963faf8e5f1188584e30d34464b91450c 100644
--- a/dist/index.mjs
+++ b/dist/index.mjs
@@ -45,7 +45,8 @@ Instructions:
 Filtered results for: ${this.inputValue?this.inputValue:k.gray("Enter something to filter")}
 `}renderOption(t,e,i){let o;return e.disabled?o=t===i?k.gray().underline(e.title):k.strikethrough().gray(e.title):o=t===i?k.cyan().underline(e.title):e.title,(e.selected?k.green(q.radioOn):q.radioOff)+"  "+o}renderDoneOrInstructions(){if(this.done)return this.value.filter(e=>e.selected).map(e=>e.title).join(", ");const t=[k.gray(this.hint),this.renderInstructions(),this.renderCurrentInput()];return this.filteredOptions.length&&this.filteredOptions[this.cursor].disabled&&t.push(k.yellow(this.warn)),t.join(" ")}render(){if(this.closed)return;this.firstRender&&this.out.write(Tr.hide),super.render();let t=[Te.symbol(this.done,this.aborted),k.bold(this.msg),Te.delimiter(!1),this.renderDoneOrInstructions()].join(" ");this.showMinError&&(t+=k.red(`You must select a minimum of ${this.minSelected} choices.`),this.showMinError=!1),t+=this.renderOptions(this.filteredOptions),this.out.write(this.clear+t),this.clear=Ee(t,this.out.columns)}}var Pr=Cr;const Oe=M,Mr=N,{style:Ce,clear:Dr}=_,{erase:_r,cursor:Pe}=D;class Ir extends Mr{constructor(t={}){super(t),this.msg=t.message,this.value=t.initial,this.initialValue=!!t.initial,this.yesMsg=t.yes||"yes",this.yesOption=t.yesOption||"(Y/n)",this.noMsg=t.no||"no",this.noOption=t.noOption||"(y/N)",this.render()}reset(){this.value=this.initialValue,this.fire(),this.render()}exit(){this.abort()}abort(){this.done=this.aborted=!0,this.fire(),this.render(),this.out.write(`
 `),this.close()}submit(){this.value=this.value||!1,this.done=!0,this.aborted=!1,this.fire(),this.render(),this.out.write(`
-`),this.close()}_(t,e){return t.toLowerCase()==="y"?(this.value=!0,this.submit()):t.toLowerCase()==="n"?(this.value=!1,this.submit()):this.bell()}render(){this.closed||(this.firstRender?this.out.write(Pe.hide):this.out.write(Dr(this.outputText,this.out.columns)),super.render(),this.outputText=[Ce.symbol(this.done,this.aborted),Oe.bold(this.msg),Ce.delimiter(this.done),this.done?this.value?this.yesMsg:this.noMsg:Oe.gray(this.initialValue?this.yesOption:this.noOption)].join(" "),this.out.write(_r.line+Pe.to(0)+this.outputText))}}var Rr=Ir,Ar={TextPrompt:oi,SelectPrompt:di,TogglePrompt:vi,DatePrompt:rr,NumberPrompt:ur,MultiselectPrompt:ye,AutocompletePrompt:Er,AutocompleteMultiselectPrompt:Pr,ConfirmPrompt:Rr};(function(s){const t=s,e=Ar,i=r=>r;function o(r,l,c={}){return new Promise((a,w)=>{const f=new e[r](l),h=c.onAbort||i,g=c.onSubmit||i,p=c.onExit||i;f.on("state",l.onState||i),f.on("submit",E=>a(g(E))),f.on("exit",E=>a(p(E))),f.on("abort",E=>w(h(E)))})}t.text=r=>o("TextPrompt",r),t.password=r=>(r.style="password",t.text(r)),t.invisible=r=>(r.style="invisible",t.text(r)),t.number=r=>o("NumberPrompt",r),t.date=r=>o("DatePrompt",r),t.confirm=r=>o("ConfirmPrompt",r),t.list=r=>{const l=r.separator||",";return o("TextPrompt",r,{onSubmit:c=>c.split(l).map(a=>a.trim())})},t.toggle=r=>o("TogglePrompt",r),t.select=r=>o("SelectPrompt",r),t.multiselect=r=>{r.choices=[].concat(r.choices||[]);const l=c=>c.filter(a=>a.selected).map(a=>a.value);return o("MultiselectPrompt",r,{onAbort:l,onSubmit:l})},t.autocompleteMultiselect=r=>{r.choices=[].concat(r.choices||[]);const l=c=>c.filter(a=>a.selected).map(a=>a.value);return o("AutocompleteMultiselectPrompt",r,{onAbort:l,onSubmit:l})};const n=(r,l)=>Promise.resolve(l.filter(c=>c.title.slice(0,r.length).toLowerCase()===r.toLowerCase()));t.autocomplete=r=>(r.suggest=r.suggest||n,r.choices=[].concat(r.choices||[]),o("AutocompletePrompt",r))})(se);const At=se,kr=["suggest","format","onState","validate","onRender","type"],Me=()=>{};async function L(s=[],{onSubmit:t=Me,onCancel:e=Me}={}){const i={},o=L._override||{};s=[].concat(s);let n,r,l,c,a,w;const f=async(h,g,p=!1)=>{if(!(!p&&h.validate&&h.validate(g)!==!0))return h.format?await h.format(g,i):g};for(r of s)if({name:c,type:a}=r,typeof a=="function"&&(a=await a(n,{...i},r),r.type=a),!!a){for(let h in r){if(kr.includes(h))continue;let g=r[h];r[h]=typeof g=="function"?await g(n,{...i},w):g}if(w=r,typeof r.message!="string")throw new Error("prompt message is required");if({name:c,type:a}=r,At[a]===void 0)throw new Error(`prompt type (${a}) is not defined`);if(o[r.name]!==void 0&&(n=await f(r,o[r.name]),n!==void 0)){i[c]=n;continue}try{n=L._injected?jr(L._injected,r.initial):await At[a](r),i[c]=n=await f(r,n,!0),l=await t(r,n,i)}catch{l=!await e(r,i)}if(l)return i}return i}function jr(s,t){const e=s.shift();if(e instanceof Error)throw e;return e===void 0?t:e}function Nr(s){L._injected=(L._injected||[]).concat(s)}function Fr(s){L._override=Object.assign({},s)}var Lr=Object.assign(L,{prompt:L,prompts:At,inject:Nr,override:Fr});let W=!0;const Z=typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{};let De=0;if(Z.process&&Z.process.env&&Z.process.stdout){const{FORCE_COLOR:s,NODE_DISABLE_COLORS:t,TERM:e}=Z.process.env;t||s==="0"?W=!1:s==="1"?W=!0:e==="dumb"?W=!1:"CI"in Z.process.env&&["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE","DRONE"].some(i=>i in Z.process.env)?W=!0:W=process.stdout.isTTY,W&&(De=e&&e.endsWith("-256color")?2:1)}let _e={enabled:W,supportLevel:De};function j(s,t,e=1){const i=`\x1B[${s}m`,o=`\x1B[${t}m`,n=new RegExp(`\\x1b\\[${t}m`,"g");return r=>_e.enabled&&_e.supportLevel>=e?i+(""+r).replace(n,i)+o:""+r}const G=j(0,0),ht=j(31,39),Ie=j(32,39),Y=j(33,39),J=j(34,39),Yr=j(35,39),Hr=j(36,39),Vr=j(91,39),Br=j(92,39),kt=Es(process.argv.slice(2),{string:["_"]}),jt=process.cwd(),Nt=[{name:"vanilla",display:"Vanilla",color:Y,variants:[{name:"vanilla",display:"JavaScript",color:Y},{name:"vanilla-ts",display:"TypeScript",color:J}]},{name:"vue",display:"Vue",color:Ie,variants:[{name:"vue",display:"JavaScript",color:Y},{name:"vue-ts",display:"TypeScript",color:J},{name:"custom-create-vue",display:"Customize with create-vue \u2197",color:Ie,customCommand:"npm create vue@latest TARGET_DIR"},{name:"custom-nuxt",display:"Nuxt \u2197",color:Br,customCommand:"npm exec nuxi init TARGET_DIR"}]},{name:"react",display:"React",color:Hr,variants:[{name:"react",display:"JavaScript",color:Y},{name:"react-ts",display:"TypeScript",color:J},{name:"react-swc",display:"JavaScript + SWC",color:Y},{name:"react-swc-ts",display:"TypeScript + SWC",color:J}]},{name:"preact",display:"Preact",color:Yr,variants:[{name:"preact",display:"JavaScript",color:Y},{name:"preact-ts",display:"TypeScript",color:J}]},{name:"lit",display:"Lit",color:Vr,variants:[{name:"lit",display:"JavaScript",color:Y},{name:"lit-ts",display:"TypeScript",color:J}]},{name:"svelte",display:"Svelte",color:ht,variants:[{name:"svelte",display:"JavaScript",color:Y},{name:"svelte-ts",display:"TypeScript",color:J},{name:"custom-svelte-kit",display:"SvelteKit \u2197",color:ht,customCommand:"npm create svelte@latest TARGET_DIR"}]},{name:"others",display:"Others",color:G,variants:[{name:"create-vite-extra",display:"create-vite-extra \u2197",color:G,customCommand:"npm create vite-extra@latest TARGET_DIR"}]}],Re=Nt.map(s=>s.variants&&s.variants.map(t=>t.name)||[s.name]).reduce((s,t)=>s.concat(t),[]),Wr={_gitignore:".gitignore"},Ft="vite-project";async function Gr(){const s=Ae(kt._[0]),t=kt.template||kt.t;let e=s||Ft;const i=()=>e==="."?P.basename(P.resolve()):e;let o;try{o=await Lr([{type:s?null:"text",name:"projectName",message:G("Project name:"),initial:Ft,onState:u=>{e=Ae(u.value)||Ft}},{type:()=>!O.existsSync(e)||Ur(e)?null:"confirm",name:"overwrite",message:()=>(e==="."?"Current directory":`Target directory "${e}"`)+" is not empty. Remove existing files and continue?"},{type:(u,{overwrite:y})=>{if(y===!1)throw new Error(ht("\u2716")+" Operation cancelled");return null},name:"overwriteChecker"},{type:()=>je(i())?null:"text",name:"packageName",message:G("Package name:"),initial:()=>Jr(i()),validate:u=>je(u)||"Invalid package.json name"},{type:t&&Re.includes(t)?null:"select",name:"framework",message:typeof t=="string"&&!Re.includes(t)?G(`"${t}" isn't a valid template. Please choose from below: `):G("Select a framework:"),initial:0,choices:Nt.map(u=>{const y=u.color;return{title:y(u.display||u.name),value:u}})},{type:u=>u&&u.variants?"select":null,name:"variant",message:G("Select a variant:"),choices:u=>u.variants.map(y=>{const m=y.color;return{title:m(y.display||y.name),value:y.name}})}],{onCancel:()=>{throw new Error(ht("\u2716")+" Operation cancelled")}})}catch(u){console.log(u.message);return}const{framework:n,overwrite:r,packageName:l,variant:c}=o,a=P.join(jt,e);r?Kr(a):O.existsSync(a)||O.mkdirSync(a,{recursive:!0});let w=c||n?.name||t,f=!1;w.includes("-swc")&&(f=!0,w=w.replace("-swc",""));const h=qr(process.env.npm_config_user_agent),g=h?h.name:"npm",p=g==="yarn"&&h?.version.startsWith("1."),{customCommand:E}=Nt.flatMap(u=>u.variants).find(u=>u.name===w)??{};if(E){const u=E.replace(/^npm create/,`${g} create`).replace("@latest",()=>p?"":"@latest").replace(/^npm exec/,()=>g==="pnpm"?"pnpm dlx":g==="yarn"&&!p?"yarn dlx":"npm exec"),[y,...m]=u.split(" "),H=m.map(Fe=>Fe.replace("TARGET_DIR",e)),{status:x}=V.sync(y,H,{stdio:"inherit"});process.exit(x??0)}console.log(`
+`),this.close()}_(t,e){return t.toLowerCase()==="y"?(this.value=!0,this.submit()):t.toLowerCase()==="n"?(this.value=!1,this.submit()):this.bell()}render(){this.closed||(this.firstRender?this.out.write(Pe.hide):this.out.write(Dr(this.outputText,this.out.columns)),super.render(),this.outputText=[Ce.symbol(this.done,this.aborted),Oe.bold(this.msg),Ce.delimiter(this.done),this.done?this.value?this.yesMsg:this.noMsg:Oe.gray(this.initialValue?this.yesOption:this.noOption)].join(" "),this.out.write(_r.line+Pe.to(0)+this.outputText))}}var Rr=Ir,Ar={TextPrompt:oi,SelectPrompt:di,TogglePrompt:vi,DatePrompt:rr,NumberPrompt:ur,MultiselectPrompt:ye,AutocompletePrompt:Er,AutocompleteMultiselectPrompt:Pr,ConfirmPrompt:Rr};(function(s){const t=s,e=Ar,i=r=>r;function o(r,l,c={}){return new Promise((a,w)=>{const f=new e[r](l),h=c.onAbort||i,g=c.onSubmit||i,p=c.onExit||i;f.on("state",l.onState||i),f.on("submit",E=>a(g(E))),f.on("exit",E=>a(p(E))),f.on("abort",E=>w(h(E)))})}t.text=r=>o("TextPrompt",r),t.password=r=>(r.style="password",t.text(r)),t.invisible=r=>(r.style="invisible",t.text(r)),t.number=r=>o("NumberPrompt",r),t.date=r=>o("DatePrompt",r),t.confirm=r=>o("ConfirmPrompt",r),t.list=r=>{const l=r.separator||",";return o("TextPrompt",r,{onSubmit:c=>c.split(l).map(a=>a.trim())})},t.toggle=r=>o("TogglePrompt",r),t.select=r=>o("SelectPrompt",r),t.multiselect=r=>{r.choices=[].concat(r.choices||[]);const l=c=>c.filter(a=>a.selected).map(a=>a.value);return o("MultiselectPrompt",r,{onAbort:l,onSubmit:l})},t.autocompleteMultiselect=r=>{r.choices=[].concat(r.choices||[]);const l=c=>c.filter(a=>a.selected).map(a=>a.value);return o("AutocompleteMultiselectPrompt",r,{onAbort:l,onSubmit:l})};const n=(r,l)=>Promise.resolve(l.filter(c=>c.title.slice(0,r.length).toLowerCase()===r.toLowerCase()));t.autocomplete=r=>(r.suggest=r.suggest||n,r.choices=[].concat(r.choices||[]),o("AutocompletePrompt",r))})(se);const At=se,kr=["suggest","format","onState","validate","onRender","type"],Me=()=>{};async function L(s=[],{onSubmit:t=Me,onCancel:e=Me}={}){const i={},o=L._override||{};s=[].concat(s);let n,r,l,c,a,w;const f=async(h,g,p=!1)=>{if(!(!p&&h.validate&&h.validate(g)!==!0))return h.format?await h.format(g,i):g};for(r of s)if({name:c,type:a}=r,typeof a=="function"&&(a=await a(n,{...i},r),r.type=a),!!a){for(let h in r){if(kr.includes(h))continue;let g=r[h];r[h]=typeof g=="function"?await g(n,{...i},w):g}if(w=r,typeof r.message!="string")throw new Error("prompt message is required");if({name:c,type:a}=r,At[a]===void 0)throw new Error(`prompt type (${a}) is not defined`);if(o[r.name]!==void 0&&(n=await f(r,o[r.name]),n!==void 0)){i[c]=n;continue}try{n=L._injected?jr(L._injected,r.initial):await At[a](r),i[c]=n=await f(r,n,!0),l=await t(r,n,i)}catch{l=!await e(r,i)}if(l)return i}return i}function jr(s,t){const e=s.shift();if(e instanceof Error)throw e;return e===void 0?t:e}function Nr(s){L._injected=(L._injected||[]).concat(s)}function Fr(s){L._override=Object.assign({},s)}var Lr=Object.assign(L,{prompt:L,prompts:At,inject:Nr,override:Fr});let W=!0;const Z=typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{};let De=0;if(Z.process&&Z.process.env&&Z.process.stdout){const{FORCE_COLOR:s,NODE_DISABLE_COLORS:t,TERM:e}=Z.process.env;t||s==="0"?W=!1:s==="1"?W=!0:e==="dumb"?W=!1:"CI"in Z.process.env&&["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE","DRONE"].some(i=>i in Z.process.env)?W=!0:W=process.stdout.isTTY,W&&(De=e&&e.endsWith("-256color")?2:1)}let _e={enabled:W,supportLevel:De};function j(s,t,e=1){const i=`\x1B[${s}m`,o=`\x1B[${t}m`,n=new RegExp(`\\x1b\\[${t}m`,"g");return r=>_e.enabled&&_e.supportLevel>=e?i+(""+r).replace(n,i)+o:""+r}const G=j(0,0),ht=j(31,39),Ie=j(32,39),Y=j(33,39),J=j(34,39),Yr=j(35,39),Hr=j(36,39),Vr=j(91,39),Br=j(92,39),kt=Es(process.argv.slice(2),{string:["_"]}),jt=process.cwd(),Nt=[{name:"vanilla",display:"Vanilla",color:Y,variants:[{name:"vanilla",display:"JavaScript",color:Y},{name:"vanilla-ts",display:"TypeScript",color:J}]},{name:"vue",display:"Vue",color:Ie,variants:[{name:"vue",display:"JavaScript",color:Y},{name:"vue-ts",display:"TypeScript",color:J},{name:"custom-create-vue",display:"Customize with create-vue \u2197",color:Ie,customCommand:"npm create vue@latest TARGET_DIR"},{name:"custom-nuxt",display:"Nuxt \u2197",color:Br,customCommand:"npm exec nuxi init TARGET_DIR"}]},{name:"react",display:"React",color:Hr,variants:[{name:"react",display:"JavaScript",color:Y},{name:"react-ts",display:"TypeScript",color:J},{name:"react-swc",display:"JavaScript + SWC",color:Y},{name:"react-swc-ts",display:"TypeScript + SWC",color:J}]},{name:"preact",display:"Preact",color:Yr,variants:[{name:"preact",display:"JavaScript",color:Y},{name:"preact-ts",display:"TypeScript",color:J}]},{name:"lit",display:"Lit",color:Vr,variants:[{name:"lit",display:"JavaScript",color:Y},{name:"lit-ts",display:"TypeScript",color:J}]},{name:"svelte",display:"Svelte",color:ht,variants:[{name:"svelte",display:"JavaScript",color:Y},{name:"svelte-ts",display:"TypeScript",color:J},{name:"custom-svelte-kit",display:"SvelteKit \u2197",color:ht,customCommand:"npm create svelte@latest TARGET_DIR"}]},{name:"others",display:"Others",color:G,variants:[{name:"create-vite-extra",display:"create-vite-extra \u2197",color:G,customCommand:"npm create vite-extra@latest TARGET_DIR"}]}],Re=Nt.map(s=>s.variants&&s.variants.map(t=>t.name)||[s.name]).reduce((s,t)=>s.concat(t),[]),Wr={_gitignore:".gitignore"},Ft="vite-project";async function Gr(name){const s=name?Ae(name):Ae(kt._[0]),t=kt.template||kt.t;let e=s||Ft;const i=()=>e==="."?P.basename(P.resolve()):e;let o;try{o=await Lr([{type:s?null:"text",name:"projectName",message:G("Project name:"),initial:Ft,onState:u=>{e=Ae(u.value)||Ft}},{type:()=>!O.existsSync(e)||Ur(e)?null:"confirm",name:"overwrite",message:()=>(e==="."?"Current directory":`Target directory "${e}"`)+" is not empty. Remove existing files and continue?"},{type:(u,{overwrite:y})=>{if(y===!1)throw new Error(ht("\u2716")+" Operation cancelled");return null},name:"overwriteChecker"},{type:()=>je(i())?null:"text",name:"packageName",message:G("Package name:"),initial:()=>Jr(i()),validate:u=>je(u)||"Invalid package.json name"},{type:t&&Re.includes(t)?null:"select",name:"framework",message:typeof t=="string"&&!Re.includes(t)?G(`"${t}" isn't a valid template. Please choose from below: `):G("Select a framework:"),initial:0,choices:Nt.map(u=>{const y=u.color;return{title:y(u.display||u.name),value:u}})},{type:u=>u&&u.variants?"select":null,name:"variant",message:G("Select a variant:"),choices:u=>u.variants.map(y=>{const m=y.color;return{title:m(y.display||y.name),value:y.name}})}],{onCancel:()=>{throw new Error(ht("\u2716")+" Operation cancelled")}})}catch(u){console.log(u.message);return}const{framework:n,overwrite:r,packageName:l,variant:c}=o,a=P.join(jt,e);r?Kr(a):O.existsSync(a)||O.mkdirSync(a,{recursive:!0});let w=c||n?.name||t,f=!1;w.includes("-swc")&&(f=!0,w=w.replace("-swc",""));const h=qr(process.env.npm_config_user_agent),g=h?h.name:"npm",p=g==="yarn"&&h?.version.startsWith("1."),{customCommand:E}=Nt.flatMap(u=>u.variants).find(u=>u.name===w)??{};if(E){const u=E.replace(/^npm create/,`${g} create`).replace("@latest",()=>p?"":"@latest").replace(/^npm exec/,()=>g==="pnpm"?"pnpm dlx":g==="yarn"&&!p?"yarn dlx":"npm exec"),[y,...m]=u.split(" "),H=m.map(Fe=>Fe.replace("TARGET_DIR",e)),{status:x}=V.sync(y,H,{stdio:"inherit"});process.exit(x??0)}console.log(`
 Scaffolding project in ${a}...`);const S=P.resolve(Le(import.meta.url),"../..",`template-${w}`),C=(u,y)=>{const m=P.join(a,Wr[u]??u);y?O.writeFileSync(m,y):ke(P.join(S,u),m)},z=O.readdirSync(S);for(const u of z.filter(y=>y!=="package.json"))C(u);const T=JSON.parse(O.readFileSync(P.join(S,"package.json"),"utf-8"));T.name=l||i(),C("package.json",JSON.stringify(T,null,2)),f&&Zr(a,w.endsWith("-ts"));const d=P.relative(jt,a);switch(console.log(`
 Done. Now run:
-`),a!==jt&&console.log(`  cd ${d.includes(" ")?`"${d}"`:d}`),g){case"yarn":console.log("  yarn"),console.log("  yarn dev");break;default:console.log(`  ${g} install`),console.log(`  ${g} run dev`);break}console.log()}function Ae(s){return s?.trim().replace(/\/+$/g,"")}function ke(s,t){O.statSync(s).isDirectory()?zr(s,t):O.copyFileSync(s,t)}function je(s){return/^(?:@[a-z\d\-*~][a-z\d\-*._~]*\/)?[a-z\d\-~][a-z\d\-._~]*$/.test(s)}function Jr(s){return s.trim().toLowerCase().replace(/\s+/g,"-").replace(/^[._]/,"").replace(/[^a-z\d\-~]+/g,"-")}function zr(s,t){O.mkdirSync(t,{recursive:!0});for(const e of O.readdirSync(s)){const i=P.resolve(s,e),o=P.resolve(t,e);ke(i,o)}}function Ur(s){const t=O.readdirSync(s);return t.length===0||t.length===1&&t[0]===".git"}function Kr(s){if(O.existsSync(s))for(const t of O.readdirSync(s))t!==".git"&&O.rmSync(P.resolve(s,t),{recursive:!0,force:!0})}function qr(s){if(!s)return;const e=s.split(" ")[0].split("/");return{name:e[0],version:e[1]}}function Zr(s,t){Ne(P.resolve(s,"package.json"),e=>e.replace(/"@vitejs\/plugin-react": ".+?"/,'"@vitejs/plugin-react-swc": "^3.0.0"')),Ne(P.resolve(s,`vite.config.${t?"ts":"js"}`),e=>e.replace("@vitejs/plugin-react","@vitejs/plugin-react-swc"))}function Ne(s,t){const e=O.readFileSync(s,"utf-8");O.writeFileSync(s,t(e),"utf-8")}Gr().catch(s=>{console.error(s)});
+`),a!==jt&&console.log(`  cd ${d.includes(" ")?`"${d}"`:d}`),g){case"yarn":console.log("  yarn"),console.log("  yarn dev");break;default:console.log(`  ${g} install`),console.log(`  ${g} run dev`);break}console.log()}function Ae(s){return s?.trim().replace(/\/+$/g,"")}function ke(s,t){O.statSync(s).isDirectory()?zr(s,t):O.copyFileSync(s,t)}function je(s){return/^(?:@[a-z\d\-*~][a-z\d\-*._~]*\/)?[a-z\d\-~][a-z\d\-._~]*$/.test(s)}function Jr(s){return s.trim().toLowerCase().replace(/\s+/g,"-").replace(/^[._]/,"").replace(/[^a-z\d\-~]+/g,"-")}function zr(s,t){O.mkdirSync(t,{recursive:!0});for(const e of O.readdirSync(s)){const i=P.resolve(s,e),o=P.resolve(t,e);ke(i,o)}}function Ur(s){const t=O.readdirSync(s);return t.length===0||t.length===1&&t[0]===".git"}function Kr(s){if(O.existsSync(s))for(const t of O.readdirSync(s))t!==".git"&&O.rmSync(P.resolve(s,t),{recursive:!0,force:!0})}function qr(s){if(!s)return;const e=s.split(" ")[0].split("/");return{name:e[0],version:e[1]}}function Zr(s,t){Ne(P.resolve(s,"package.json"),e=>e.replace(/"@vitejs\/plugin-react": ".+?"/,'"@vitejs/plugin-react-swc": "^3.0.0"')),Ne(P.resolve(s,`vite.config.${t?"ts":"js"}`),e=>e.replace("@vitejs/plugin-react","@vitejs/plugin-react-swc"))}function Ne(s,t){const e=O.readFileSync(s,"utf-8");O.writeFileSync(s,t(e),"utf-8")}
+export const createVite = Gr
\ No newline at end of file
diff --git a/index.js b/index.js
index f5e8e064a68d9fe50149b6b19cfec12713ecec5e..5a97be9738fdda486813207df7d74190eb6ac612 100644
--- a/index.js
+++ b/index.js
@@ -1,3 +1,5 @@
 #!/usr/bin/env node
 
 import './dist/index.mjs'
+
+export { createVite } from './dist/index.mjs'