create-banana 2.4.2 → 2.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
- import He from"path";import B from"fs-extra";import{select as ke}from"@inquirer/prompts";import F from"chalk";import Y from"ora";import je from"figlet";var he=async e=>{try{return await je.text(e,{font:"Big Money-se",horizontalLayout:"default",verticalLayout:"default",width:80,whitespaceBreak:!0})}catch(t){console.log("Something went wrong..."),console.dir(t)}},E=he;import we from"chalk";function Se(e,t,r){t/=100,r/=100;let i=s=>(s+e/30)%12,o=t*Math.min(r,1-r),n=s=>r-o*Math.max(-1,Math.min(i(s)-3,Math.min(9-i(s),1)));return[Math.round(255*n(0)),Math.round(255*n(8)),Math.round(255*n(4))]}function Pe(e){return e.split("").map((t,r)=>{let i=r/e.length*360,[o,n,s]=Se(i,100,50);return we.rgb(o,n,s)(t)}).join("")}var L=Pe;import j from"chalk";import z from"boxen";var S=console.log,g=[22,198,12],f,I=(e,{useEslint:t,usePrettier:r,useHusky:i})=>{f=t?"pnpm i && pnpm lint":r?"pnpm i && pnpm format":"pnpm i",f=i?`cd ${e} && git init && `+f:`cd ${e} && `+f,S(j.cyan(z(j.rgb(...g)(`
2
+ import Ae from"path";import F from"fs-extra";import{select as Te}from"@inquirer/prompts";import Y from"chalk";import U from"ora";import he from"figlet";var we=async e=>{try{return await he.text(e,{font:"Big Money-se",horizontalLayout:"default",verticalLayout:"default",width:80,whitespaceBreak:!0})}catch(t){console.log("Something went wrong..."),console.dir(t)}},I=we;import Se from"chalk";function Pe(e,t,r){t/=100,r/=100;let i=s=>(s+e/30)%12,o=t*Math.min(r,1-r),n=s=>r-o*Math.max(-1,Math.min(i(s)-3,Math.min(9-i(s),1)));return[Math.round(255*n(0)),Math.round(255*n(8)),Math.round(255*n(4))]}function ke(e){return e.split("").map((t,r)=>{let i=r/e.length*360,[o,n,s]=Pe(i,100,50);return Se.rgb(o,n,s)(t)}).join("")}var z=ke;import j from"chalk";import $ from"boxen";var P=console.log,g=[22,198,12],f,R=(e,{useEslint:t,usePrettier:r,useHusky:i})=>{f=t?"pnpm i && pnpm lint":r?"pnpm i && pnpm format":"pnpm i",f=i?`cd ${e} && git init && `+f:`cd ${e} && `+f,P(j.cyan($(j.rgb(...g)(`
3
3
  ${f}
4
- `),{title:"commands",titleAlignment:"center"})))},w,R=(e,{useHusky:t,useCommitizen:r})=>{w=t?`cd ${e} && git add .`:`cd ${e} && git init && git add .`,w+=` && ${r?"pnpm commit":'git commit -m "Initial commit"'}`,S(j.cyan(z(j.rgb(...g)(`
5
- ${w}
6
- `),{title:"commands",titleAlignment:"center"})))},x,V=(e,{useCommitizen:t})=>{t&&(D(`
4
+ `),{title:"commands",titleAlignment:"center"})))},S,V=(e,{useHusky:t,useCommitizen:r})=>{S=t?`cd ${e} && git add .`:`cd ${e} && git init && git add .`,S+=` && ${r?"pnpm commit":'git commit -m "Initial commit"'}`,P(j.cyan($(j.rgb(...g)(`
5
+ ${S}
6
+ `),{title:"commands",titleAlignment:"center"})))},D,_=(e,{useCommitizen:t})=>{t&&(b(`
7
7
  To set up Commitizen, run the following command:
8
- `),x=`cd ${e} && pnpm i -g commitizen && commitizen init cz-conventional-changelog --pnpm --save-dev --save-exact`,S(j.cyan(z(j.rgb(...g)(`
9
- ${x}
10
- `),{title:"commands",titleAlignment:"center"}))))},_=async()=>{S(L(await E("BANANA")))},D=async e=>{S(L(e))};var Te=async(e,t)=>{try{if(B.pathExistsSync(t))if(!await ke({message:`The target folder "${e}" is existing. ${F.yellow("Overwrite")}?`,choices:[{name:"Yes",value:!0},{name:"No",value:!1}]}))Y(F.rgb(...g).bold("Process canceled")).succeed(),process.exit(0);else{let i=Y("Overwriting existing folder...").start();await B.emptyDir(t),i.succeed("Existing folder overwritten.")}}catch(r){console.error(r),process.exit(1)}},U=Te;import P from"fs-extra";import k from"path";import ve from"ejs";var y=class{projectName;targetDir;pkg;fileMiddlewares;constructor(t,r){this.projectName=t,this.targetDir=r,this.pkg={},this.fileMiddlewares=[]}writePkg(t){this.pkg={...this.pkg,...t}}extendDepsPkg(t){this.pkg.dependencies={...this.pkg.dependencies,...t.dependencies}}extendDevDepsPkg(t){this.pkg.devDependencies={...this.pkg.devDependencies,...t.devDependencies}}extendScriptsPkg(t){this.pkg.scripts={...this.pkg.scripts,...t.scripts}}copy(t,r){this.fileMiddlewares.push(()=>{P.copySync(t,k.join(this.targetDir,r))})}rename(t,r){this.fileMiddlewares.push(()=>{P.renameSync(k.join(this.targetDir,t),k.join(this.targetDir,r))})}render(t,r,i){this.fileMiddlewares.push(()=>{P.outputFileSync(k.join(this.targetDir,r),ve.render(P.readFileSync(t,"utf-8"),i))})}async generate(){this.fileMiddlewares.forEach(t=>t()),P.writeFileSync(k.join(this.targetDir,"package.json"),JSON.stringify(this.pkg,null,2))}};import W from"chalk";import{input as Ce}from"@inquirer/prompts";import{select as xe}from"@inquirer/prompts";var c=async e=>await xe({message:e,choices:[{name:"Yes",value:!0},{name:"No",value:!1}]});import{checkbox as De,select as be}from"@inquirer/prompts";import $ from"chalk";var q=async e=>{let t=await De({message:`Please select the ${$.yellow("dependencies")} to include:`,choices:[{name:"Pinia",value:"pinia"},{name:"Vue-Router",value:"vue-router"},{name:"TailwindCSS",value:"tailwindcss"}]});if(e.usePinia=t.includes("pinia"),e.useVueRouter=t.includes("vue-router"),e.useTailwindcss=t.includes("tailwindcss"),e.usePinia&&(e.usePiniaPluginPersistedstate=await c(`Do you want to use ${$.yellow.bold("pinia-plugin-persistedstate")} for Pinia state persistence?`)),e.useVueRouter){let r=await be({message:`Select the ${$.yellow("Vue-Router mode")} to use:`,choices:[{name:"HTML5 Mode",value:"html5"},{name:"Hash Mode",value:"hash"}]});e.useHTML5Mode=r.includes("html5"),e.useHashMode=r.includes("hash")}};import{checkbox as Me}from"@inquirer/prompts";import b from"chalk";var K=async e=>{let t=await Me({message:`Please select the ${b.yellow("devDependencies")} to include:`,choices:[{name:"Eslint",value:"eslint"},{name:"Prettier",value:"prettier"},{name:"Commitizen",value:"commitizen"}]});e.useEslint=t.includes("eslint"),e.usePrettier=t.includes("prettier"),e.useCommitizen=t.includes("commitizen"),(e.useEslint||e.usePrettier)&&(e.useHusky=await c(`Do you want to use ${b.yellow.bold("Husky")} for Git hooks?`)),e.useHusky&&(e.useLintStaged=await c(`Do you want to use ${b.yellow.bold("lint-staged")} to run linters on staged files?`)),M.useTailwindcss&&e.usePrettier&&(e.usePrettierPluginTailwindcss=await c(`Do you want to use ${b.yellow.bold("Prettier-Plugin-Tailwindcss")} for Tailwind CSS formatting?`))};var X=async()=>await Ce({message:`Enter your ${W.yellow("project name")}:`,required:!0,validate:e=>/[\\/:*?"<>|]/.test(e)?'Project name cannot contain special characters like \\ / : * ? " < > |':!0}),M={usePinia:!1,useVueRouter:!1,useTailwindcss:!1,usePiniaPluginPersistedstate:!1,useHTML5Mode:!1,useHashMode:!1},Q={useEslint:!1,usePrettier:!1,useHusky:!1,useLintStaged:!1,useCommitizen:!1,usePrettierPluginTailwindcss:!1},Z=async()=>{let e=await c(`Do you want to use ${W.yellow.bold("TypeScript")} in your project?`);return await q(M),await K(Q),{useTypescript:e,...M,...Q}};import Ge from"fs-extra";import{fileURLToPath as Ne}from"url";var a=Ne(new URL("./template",import.meta.url));import p from"path";var ee=(e,t)=>{let r=t.useTypescript?p.join(a,"dep","base","TS"):p.join(a,"dep","base");e.writePkg(Ge.readJSONSync(p.join(r,"static","package.json"))),e.copy(p.join(r,"static"),""),e.rename("_gitignore",".gitignore"),e.render(p.join(r,"ejs","App.vue.ejs"),p.join("src","App.vue"),{...t}),e.render(p.join(r,"ejs",t.useTypescript?"main.ts.ejs":"main.js.ejs"),p.join("src",t.useTypescript?"main.ts":"main.js"),{...t}),e.render(p.join(r,"ejs","README.md.ejs"),"README.md",{projectName:e.projectName}),e.render(p.join(r,"ejs",t.useTypescript?"vite.config.ts.ejs":"vite.config.js.ejs"),t.useTypescript?"vite.config.ts":"vite.config.js",{...t}),e.render(p.join(r,"ejs","extensions.json.ejs"),p.join(".vscode","extensions.json"),{...t}),e.render(p.join(r,"ejs","settings.json.ejs"),p.join(".vscode","settings.json"),{...t}),t.useTailwindcss&&(e.render(p.join(r,"tailwindcss","App.vue.ejs"),p.join("src","App.vue"),{...t}),e.copy(p.join(r,"tailwindcss","components"),p.join("src","components")),e.copy(p.join(r,"tailwindcss","views"),p.join("src","views")))};import te from"fs-extra";import u from"path";var re=(e,t)=>{let{usePinia:r,usePiniaPluginPersistedstate:i,useTypescript:o}=t;if(!r)return;let n=o?u.join(a,"dep","pinia","TS"):u.join(a,"dep","pinia");if(e.extendDepsPkg(te.readJSONSync(u.join(n,"package.json"))),e.copy(u.join(n,o?"counter.ts":"counter.js"),u.join("src","stores",o?"counter.ts":"counter.js")),!i)return;let s=u.join(n,"pinia-plugin-persistedstate");e.extendDepsPkg(te.readJSONSync(u.join(s,"package.json"))),e.copy(u.join(s,o?"key.ts":"key.js"),u.join("src","stores",o?"key.ts":"key.js"))};import Oe from"fs-extra";import l from"path";var ie=(e,t)=>{let{useVueRouter:r,usePiniaPluginPersistedstate:i,useTypescript:o,useHTML5Mode:n,useHashMode:s}=t;if(!r)return;let m=o?l.join(a,"dep","vue-router","TS"):l.join(a,"dep","vue-router");e.extendDepsPkg(Oe.readJSONSync(l.join(m,"package.json"))),e.copy(l.join(m,"static"),"src"),e.render(l.join(m,"ejs","AboutView.vue.ejs"),l.join("src","views","AboutView.vue"),{usePiniaPluginPersistedstate:i}),e.render(l.join(m,"ejs","router",o?"index.ts.ejs":"index.js.ejs"),l.join("src","router",o?"index.ts":"index.js"),{useHTML5Mode:n,useHashMode:s})};import Le from"fs-extra";import C from"path";var oe=(e,t)=>{if(!t.useTailwindcss)return;let r=C.join(a,"dep","tailwindcss");e.extendDepsPkg(Le.readJSONSync(C.join(r,"package.json"))),e.copy(C.join(r,"src","styles"),C.join("src","styles"))};var N=async(e,t)=>(ee(e,t),re(e,t),ie(e,t),oe(e,t),t);import ne from"fs-extra";import T from"path";var se=(e,t)=>{let{useEslint:r,usePrettier:i,useTypescript:o}=t;if(!r)return;let n=o?T.join(a,"devDep","eslint","TS"):T.join(a,"devDep","eslint"),s=ne.readJSONSync(T.join(n,"package.json"));e.extendDevDepsPkg(s),e.extendScriptsPkg(s),e.render(T.join(n,o?"eslint.config.ts.ejs":"eslint.config.js.ejs"),o?"eslint.config.ts":"eslint.config.js",{usePrettier:i}),i&&e.extendDevDepsPkg(ne.readJSONSync(T.join(n,"prettierPkg.json")))};import ae from"fs-extra";import v from"path";var pe=(e,t)=>{let{usePrettier:r,usePrettierPluginTailwindcss:i}=t;if(!r)return;let o=v.join(a,"devDep","prettier"),n=ae.readJSONSync(v.join(o,"static","package.json"));e.extendDevDepsPkg(n),e.extendScriptsPkg(n),e.copy(v.join(o,"static",".prettierignore"),".prettierignore"),e.render(v.join(o,"ejs",".prettierrc.ejs"),".prettierrc",{usePrettierPluginTailwindcss:i}),i&&e.extendDevDepsPkg(ae.readJSONSync(v.join(o,"prettier-plugin-tailwindcss","package.json")))};import ze from"fs-extra";import d from"path";var ce=(e,t)=>{let{useEslint:r,usePrettier:i,useHusky:o,useLintStaged:n}=t;if(!o)return;let s=d.join(a,"devDep","husky"),m=ze.readJSONSync(d.join(s,"package.json"));e.extendDevDepsPkg(m),e.extendScriptsPkg(m),e.copy(d.join(s,"_"),d.join(".husky","_")),e.rename(d.join(".husky","_","_gitignore"),d.join(".husky","_",".gitignore")),e.render(d.join(s,"pre-commit.ejs"),d.join(".husky","pre-commit"),{useEslint:r,usePrettier:i,useLintStaged:n})};import H from"fs-extra";import G from"path";var me=(e,t)=>{let{useEslint:r,usePrettier:i,useLintStaged:o}=t;if(!o)return;let n=G.join(a,"devDep","lintStaged"),s=H.readJSONSync(G.join(n,"package.json"));e.extendDevDepsPkg(s),e.extendScriptsPkg(s);let m={};r?m=H.readJSONSync(G.join(n,"eslint.json")):i&&(m=H.readJSONSync(G.join(n,"prettier.json"))),e.writePkg(m)};import $e from"fs-extra";import ue from"path";var le=(e,t)=>{let{useCommitizen:r}=t;if(!r)return;let i=ue.join(a,"devDep","commitizen"),o=$e.readJSONSync(ue.join(i,"package.json"));e.extendScriptsPkg(o)};var O=async(e,t)=>(se(e,t),pe(e,t),ce(e,t),me(e,t),le(e,t),t);var de=async e=>{let t=await Z();return N(e,t),O(e,t),t};import{execa as A}from"execa";import J from"chalk";var fe=async e=>{if(!await c(`Do you want to ${J.yellow.bold("execute")} the above commands now?`))return;await A({shell:!0,stdio:"inherit"})`${f}`;let t=!1;e.useCommitizen&&(t=await c(`Do you want to ${J.yellow.bold("install the commitizen")} now?`),t&&await A({shell:!0,stdio:"inherit"})`${x}`),!(e.useCommitizen&&!t)&&await c(`Do you want to ${J.yellow.bold("execute the git")} commands now?`)&&await A({shell:!0,stdio:"inherit"})`${w}`};import Ae from"ora";import Je from"chalk";var ge=async()=>{await _();let e=await X(),t=He.join(process.cwd(),e);await U(e,t);let r=new y(e,t),i=await de(r),o=Ae("Generating files...").start();await r.generate(),o.succeed("Files generated successfully."),D(`
8
+ `),D=`cd ${e} && pnpm i -g commitizen && commitizen init cz-conventional-changelog --pnpm --save-dev --save-exact`,P(j.cyan($(j.rgb(...g)(`
9
+ ${D}
10
+ `),{title:"commands",titleAlignment:"center"}))))},B=async()=>{P(z(await I("BANANA")))},b=async e=>{P(z(e))};var ve=async(e,t)=>{try{if(F.pathExistsSync(t))if(!await Te({message:`The target folder "${e}" is existing. ${Y.yellow("Overwrite")}?`,choices:[{name:"Yes",value:!0},{name:"No",value:!1}]}))U(Y.rgb(...g).bold("Process canceled")).succeed(),process.exit(0);else{let i=U("Overwriting existing folder...").start();await F.emptyDir(t),i.succeed("Existing folder overwritten.")}}catch(r){console.error(r),process.exit(1)}},q=ve;import k from"fs-extra";import T from"path";import xe from"ejs";var y=class{projectName;targetDir;pkg;fileMiddlewares;constructor(t,r){this.projectName=t,this.targetDir=r,this.pkg={},this.fileMiddlewares=[]}writePkg(t){this.pkg={...this.pkg,...t}}extendDepsPkg(t){this.pkg.dependencies={...this.pkg.dependencies,...t.dependencies}}extendDevDepsPkg(t){this.pkg.devDependencies={...this.pkg.devDependencies,...t.devDependencies}}extendScriptsPkg(t){this.pkg.scripts={...this.pkg.scripts,...t.scripts}}copy(t,r){this.fileMiddlewares.push(()=>{k.copySync(t,T.join(this.targetDir,r))})}rename(t,r){this.fileMiddlewares.push(()=>{k.renameSync(T.join(this.targetDir,t),T.join(this.targetDir,r))})}render(t,r,i){this.fileMiddlewares.push(()=>{k.outputFileSync(T.join(this.targetDir,r),xe.render(k.readFileSync(t,"utf-8"),i))})}async generate(){this.fileMiddlewares.forEach(t=>t()),k.writeFileSync(T.join(this.targetDir,"package.json"),JSON.stringify(this.pkg,null,2))}};import X from"chalk";import{input as Ne}from"@inquirer/prompts";import{select as De}from"@inquirer/prompts";var c=async e=>await De({message:e,choices:[{name:"Yes",value:!0},{name:"No",value:!1}]});import{checkbox as be,select as Me}from"@inquirer/prompts";import H from"chalk";var K=async e=>{let t=await be({message:`Please select the ${H.yellow("dependencies")} to include:`,choices:[{name:"Pinia",value:"pinia"},{name:"Vue-Router",value:"vue-router"},{name:"TailwindCSS",value:"tailwindcss"}]});if(e.usePinia=t.includes("pinia"),e.useVueRouter=t.includes("vue-router"),e.useTailwindcss=t.includes("tailwindcss"),e.usePinia&&(e.usePiniaPluginPersistedstate=await c(`Do you want to use ${H.yellow.bold("pinia-plugin-persistedstate")} for Pinia state persistence?`)),e.useVueRouter){let r=await Me({message:`Select the ${H.yellow("Vue-Router mode")} to use:`,choices:[{name:"HTML5 Mode",value:"html5"},{name:"Hash Mode",value:"hash"}]});e.useHTML5Mode=r.includes("html5"),e.useHashMode=r.includes("hash")}};import{checkbox as Ce}from"@inquirer/prompts";import M from"chalk";var Q=async e=>{let t=await Ce({message:`Please select the ${M.yellow("devDependencies")} to include:`,choices:[{name:"Eslint",value:"eslint"},{name:"Prettier",value:"prettier"},{name:"Commitizen",value:"commitizen"}]});e.useEslint=t.includes("eslint"),e.usePrettier=t.includes("prettier"),e.useCommitizen=t.includes("commitizen"),(e.useEslint||e.usePrettier)&&(e.useHusky=await c(`Do you want to use ${M.yellow.bold("Husky")} for Git hooks?`)),e.useHusky&&(e.useLintStaged=await c(`Do you want to use ${M.yellow.bold("lint-staged")} to run linters on staged files?`)),C.useTailwindcss&&e.usePrettier&&(e.usePrettierPluginTailwindcss=await c(`Do you want to use ${M.yellow.bold("Prettier-Plugin-Tailwindcss")} for Tailwind CSS formatting?`))};var Z=async()=>await Ne({message:`Enter your ${X.yellow("project name")}:`,required:!0,validate:e=>/[\\/:*?"<>|]/.test(e)?'Project name cannot contain special characters like \\ / : * ? " < > |':!0}),C={usePinia:!1,useVueRouter:!1,useTailwindcss:!1,usePiniaPluginPersistedstate:!1,useHTML5Mode:!1,useHashMode:!1},W={useEslint:!1,usePrettier:!1,useHusky:!1,useLintStaged:!1,useCommitizen:!1,usePrettierPluginTailwindcss:!1},ee=async()=>{let e=await c(`Do you want to use ${X.yellow.bold("TypeScript")} in your project?`);return await K(C),await Q(W),{useTypescript:e,...C,...W}};import Oe from"fs-extra";import{fileURLToPath as Ge}from"url";var a=Ge(new URL("./template",import.meta.url));import p from"path";var te=(e,t)=>{let r=t.useTypescript?p.join(a,"dep","base","TS"):p.join(a,"dep","base");e.writePkg(Oe.readJSONSync(p.join(r,"static","package.json"))),e.copy(p.join(r,"static"),""),e.rename("_gitignore",".gitignore"),e.render(p.join(r,"ejs","App.vue.ejs"),p.join("src","App.vue"),{...t}),e.render(p.join(r,"ejs",t.useTypescript?"main.ts.ejs":"main.js.ejs"),p.join("src",t.useTypescript?"main.ts":"main.js"),{...t}),e.render(p.join(r,"ejs","README.md.ejs"),"README.md",{projectName:e.projectName}),e.render(p.join(r,"ejs",t.useTypescript?"vite.config.ts.ejs":"vite.config.js.ejs"),t.useTypescript?"vite.config.ts":"vite.config.js",{...t}),e.render(p.join(r,"ejs","extensions.json.ejs"),p.join(".vscode","extensions.json"),{...t}),e.render(p.join(r,"ejs","settings.json.ejs"),p.join(".vscode","settings.json"),{...t}),t.useTailwindcss&&(e.render(p.join(r,"tailwindcss","App.vue.ejs"),p.join("src","App.vue"),{...t}),e.copy(p.join(r,"tailwindcss","components"),p.join("src","components")),e.copy(p.join(r,"tailwindcss","views"),p.join("src","views")))};import re from"fs-extra";import u from"path";var ie=(e,t)=>{let{usePinia:r,usePiniaPluginPersistedstate:i,useTypescript:o}=t;if(!r)return;let n=o?u.join(a,"dep","pinia","TS"):u.join(a,"dep","pinia");if(e.extendDepsPkg(re.readJSONSync(u.join(n,"package.json"))),e.copy(u.join(n,o?"counter.ts":"counter.js"),u.join("src","stores",o?"counter.ts":"counter.js")),!i)return;let s=u.join(n,"pinia-plugin-persistedstate");e.extendDepsPkg(re.readJSONSync(u.join(s,"package.json"))),e.copy(u.join(s,o?"key.ts":"key.js"),u.join("src","stores",o?"key.ts":"key.js"))};import Le from"fs-extra";import m from"path";var oe=(e,t)=>{let{useTailwindcss:r,useVueRouter:i,usePiniaPluginPersistedstate:o,useTypescript:n,useHTML5Mode:s,useHashMode:l}=t;if(!i)return;let w=n?m.join(a,"dep","vue-router","TS"):m.join(a,"dep","vue-router");e.extendDepsPkg(Le.readJSONSync(m.join(w,"package.json"))),e.copy(m.join(w,"static"),"src"),e.render(m.join(w,"ejs","AboutView.vue.ejs"),m.join("src","views","AboutView.vue"),{usePiniaPluginPersistedstate:o}),e.render(m.join(w,"ejs","router",n?"index.ts.ejs":"index.js.ejs"),m.join("src","router",n?"index.ts":"index.js"),{useHTML5Mode:s,useHashMode:l}),r&&e.copy(m.join(w,"tailwindcss","TitleText.vue"),m.join("src","components","TitleText.vue"))};import ze from"fs-extra";import N from"path";var ne=(e,t)=>{if(!t.useTailwindcss)return;let r=N.join(a,"dep","tailwindcss");e.extendDepsPkg(ze.readJSONSync(N.join(r,"package.json"))),e.copy(N.join(r,"src","styles"),N.join("src","styles"))};var G=async(e,t)=>(te(e,t),ie(e,t),oe(e,t),ne(e,t),t);import se from"fs-extra";import v from"path";var ae=(e,t)=>{let{useEslint:r,usePrettier:i,useTypescript:o}=t;if(!r)return;let n=o?v.join(a,"devDep","eslint","TS"):v.join(a,"devDep","eslint"),s=se.readJSONSync(v.join(n,"package.json"));e.extendDevDepsPkg(s),e.extendScriptsPkg(s),e.render(v.join(n,o?"eslint.config.ts.ejs":"eslint.config.js.ejs"),o?"eslint.config.ts":"eslint.config.js",{usePrettier:i}),i&&e.extendDevDepsPkg(se.readJSONSync(v.join(n,"prettierPkg.json")))};import pe from"fs-extra";import x from"path";var ce=(e,t)=>{let{usePrettier:r,usePrettierPluginTailwindcss:i}=t;if(!r)return;let o=x.join(a,"devDep","prettier"),n=pe.readJSONSync(x.join(o,"static","package.json"));e.extendDevDepsPkg(n),e.extendScriptsPkg(n),e.copy(x.join(o,"static",".prettierignore"),".prettierignore"),e.render(x.join(o,"ejs",".prettierrc.ejs"),".prettierrc",{usePrettierPluginTailwindcss:i}),i&&e.extendDevDepsPkg(pe.readJSONSync(x.join(o,"prettier-plugin-tailwindcss","package.json")))};import $e from"fs-extra";import d from"path";var me=(e,t)=>{let{useEslint:r,usePrettier:i,useHusky:o,useLintStaged:n}=t;if(!o)return;let s=d.join(a,"devDep","husky"),l=$e.readJSONSync(d.join(s,"package.json"));e.extendDevDepsPkg(l),e.extendScriptsPkg(l),e.copy(d.join(s,"_"),d.join(".husky","_")),e.rename(d.join(".husky","_","_gitignore"),d.join(".husky","_",".gitignore")),e.render(d.join(s,"pre-commit.ejs"),d.join(".husky","pre-commit"),{useEslint:r,usePrettier:i,useLintStaged:n})};import A from"fs-extra";import O from"path";var ue=(e,t)=>{let{useEslint:r,usePrettier:i,useLintStaged:o}=t;if(!o)return;let n=O.join(a,"devDep","lintStaged"),s=A.readJSONSync(O.join(n,"package.json"));e.extendDevDepsPkg(s),e.extendScriptsPkg(s);let l={};r?l=A.readJSONSync(O.join(n,"eslint.json")):i&&(l=A.readJSONSync(O.join(n,"prettier.json"))),e.writePkg(l)};import He from"fs-extra";import le from"path";var de=(e,t)=>{let{useCommitizen:r}=t;if(!r)return;let i=le.join(a,"devDep","commitizen"),o=He.readJSONSync(le.join(i,"package.json"));e.extendScriptsPkg(o)};var L=async(e,t)=>(ae(e,t),ce(e,t),me(e,t),ue(e,t),de(e,t),t);var fe=async e=>{let t=await ee();return G(e,t),L(e,t),t};import{execa as J}from"execa";import E from"chalk";var ge=async e=>{if(!await c(`Do you want to ${E.yellow.bold("execute")} the above commands now?`))return;await J({shell:!0,stdio:"inherit"})`${f}`;let t=!1;e.useCommitizen&&(t=await c(`Do you want to ${E.yellow.bold("install the commitizen")} now?`),t&&await J({shell:!0,stdio:"inherit"})`${D}`),!(e.useCommitizen&&!t)&&await c(`Do you want to ${E.yellow.bold("execute the git")} commands now?`)&&await J({shell:!0,stdio:"inherit"})`${S}`};import Je from"ora";import Ee from"chalk";var ye=async()=>{await B();let e=await Z(),t=Ae.join(process.cwd(),e);await q(e,t);let r=new y(e,t),i=await fe(r),o=Je("Generating files...").start();await r.generate(),o.succeed("Files generated successfully."),b(`
11
11
  Project initialization complete. You may execute the following commands:
12
- `),I(e,i),V(e,i),D(`
12
+ `),R(e,i),_(e,i),b(`
13
13
  And initialize Git using the following commands:
14
- `),R(e,i),await fe(i),console.log(Je.rgb(...g).bold(`
14
+ `),V(e,i),await ge(i),console.log(Ee.rgb(...g).bold(`
15
15
  All commands executed successfully!
16
- `))};import{program as h}from"commander";import Ee from"path";import Ie from"fs-extra";var Re=[{flags:"--p3a, --usePinia",description:"pinia state management"},{flags:"-v, --useVueRouter",description:"vue-router for routing"},{flags:"--t9s, --useTailwindcss",description:"tailwindcss for styling"},{flags:"--p23e, --usePiniaPluginPersistedstate",description:"pinia plugin persistedstate"},{flags:"--h7e, --useHTML5Mode",description:"HTML5 mode for routing"},{flags:"--h6e, --useHashMode",description:"hash mode for routing"},{flags:"--t8t, --useTypescript",description:"typescript support"},{flags:"-e, --useEslint",description:"eslint support"},{flags:"--p6r, --usePrettier",description:"prettier support"},{flags:"--h3y, --useHusky",description:"husky support"},{flags:"-l, --useLintStaged",description:"lint-staged support"},{flags:"-c, --useCommitizen",description:"commitizen support"},{flags:"--p23s, --usePrettierPluginTailwindcss",description:"prettier plugin tailwindcss support"}];h.description("Create a new project with features you select.");Re.forEach(({flags:e,description:t})=>{h.option(e,t,!1)});h.argument("<projectName>","Name of the project to create");var Ve=e=>{e.usePinia||(e.usePiniaPluginPersistedstate=!1),!e.useEslint&&!e.usePrettier&&(e.useHusky=!1),e.useHusky||(e.useLintStaged=!1),e.useTailwindcss&&e.usePrettier||(e.usePrettierPluginTailwindcss=!1),e.useVueRouter&&!e.useHTML5Mode&&!e.useHashMode&&(e.useHTML5Mode=!0),e.useHTML5Mode&&e.useHashMode&&(e.useHashMode=!1)},ye=async()=>{h.parse();let e=h.args[0],t=Ee.join(process.cwd(),e);await Ie.emptyDir(t);let r=new y(e,t),i=h.opts();Ve(i),N(r,i),O(r,i),await r.generate()};process.argv.length>2?await ye():await ge();
16
+ `))};import{program as h}from"commander";import Ie from"path";import Re from"fs-extra";var Ve=[{flags:"--p3a, --usePinia",description:"pinia state management"},{flags:"-v, --useVueRouter",description:"vue-router for routing"},{flags:"--t9s, --useTailwindcss",description:"tailwindcss for styling"},{flags:"--p23e, --usePiniaPluginPersistedstate",description:"pinia plugin persistedstate"},{flags:"--h7e, --useHTML5Mode",description:"HTML5 mode for routing"},{flags:"--h6e, --useHashMode",description:"hash mode for routing"},{flags:"--t8t, --useTypescript",description:"typescript support"},{flags:"-e, --useEslint",description:"eslint support"},{flags:"--p6r, --usePrettier",description:"prettier support"},{flags:"--h3y, --useHusky",description:"husky support"},{flags:"-l, --useLintStaged",description:"lint-staged support"},{flags:"-c, --useCommitizen",description:"commitizen support"},{flags:"--p23s, --usePrettierPluginTailwindcss",description:"prettier plugin tailwindcss support"}];h.description("Create a new project with features you select.");Ve.forEach(({flags:e,description:t})=>{h.option(e,t,!1)});h.argument("<projectName>","Name of the project to create");var _e=e=>{e.usePinia||(e.usePiniaPluginPersistedstate=!1),!e.useEslint&&!e.usePrettier&&(e.useHusky=!1),e.useHusky||(e.useLintStaged=!1),e.useTailwindcss&&e.usePrettier||(e.usePrettierPluginTailwindcss=!1),e.useVueRouter&&!e.useHTML5Mode&&!e.useHashMode&&(e.useHTML5Mode=!0),e.useHTML5Mode&&e.useHashMode&&(e.useHashMode=!1)},je=async()=>{h.parse();let e=h.args[0],t=Ie.join(process.cwd(),e);await Re.emptyDir(t);let r=new y(e,t),i=h.opts();_e(i),G(r,i),L(r,i),await r.generate()};process.argv.length>2?await je():await ye();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "scripts": {
3
- "format": "prettier --write --experimental-cli src/"
3
+ "format": "prettier --write ."
4
4
  },
5
5
  "devDependencies": {
6
6
  "prettier": "3.7.4"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-banana",
3
- "version": "2.4.2",
3
+ "version": "2.4.4",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/TMname1/create-banana.git"
@@ -72,7 +72,7 @@
72
72
  "scripts": {
73
73
  "commit": "cz",
74
74
  "lint": "eslint . --fix --cache",
75
- "format": "prettier --write --experimental-cli .",
75
+ "format": "prettier --write .",
76
76
  "lint-staged": "lint-staged",
77
77
  "build": "tsc --noEmit && npx tsx ./script/build.ts",
78
78
  "test": "pnpm build && dotenvx run -- vitest --bail 1",
package/readme.md CHANGED
@@ -33,6 +33,15 @@ Options:
33
33
  -h, --help display help for command
34
34
  ```
35
35
 
36
+ ## Test
37
+
38
+ To execute test, run:
39
+
40
+ ```bash
41
+ pnpm test
42
+ ```
43
+
44
+ The test will run E2E_test, which involves initializing the git repository and testing that the package.json directives work. Match Snapshots are run after each E2E_test passed.
36
45
 
37
46
  # Currently implemented functions
38
47