create-banana 2.4.2 → 2.4.3
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
|
|
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"})))},
|
|
5
|
-
${
|
|
6
|
-
`),{title:"commands",titleAlignment:"center"})))},
|
|
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
|
-
`),
|
|
9
|
-
${
|
|
10
|
-
`),{title:"commands",titleAlignment:"center"}))))},
|
|
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
|
-
`),
|
|
12
|
+
`),R(e,i),_(e,i),b(`
|
|
13
13
|
And initialize Git using the following commands:
|
|
14
|
-
`),
|
|
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
|
|
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();
|
package/package.json
CHANGED
|
File without changes
|
/package/dist/template/dep/{base/tailwindcss/components → vue-router/tailwindcss}/TitleText.vue
RENAMED
|
File without changes
|