create-banana 2.3.0 → 2.3.1
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 +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import De from"path";import C from"fs-extra";import{select as ae}from"@inquirer/prompts";import pe from"chalk";import
|
|
2
|
+
import De from"path";import C from"fs-extra";import{select as ae}from"@inquirer/prompts";import pe from"chalk";import me from"ora";var ce=async(e,t)=>{try{if(C.pathExistsSync(t))if(!await ae({message:`The target folder "${e}" is existing. ${pe.yellow("Overwrite")}?`,choices:[{name:"Yes",value:!0},{name:"No",value:!1}]}))console.log("canceled!"),process.exit(0);else{let o=me("Overwriting existing folder...").start();await C.remove(t),await C.mkdir(t),o.succeed("Existing folder overwritten.")}}catch(r){console.error(r),process.exit(1)}},R=ce;import j from"fs-extra";import h from"path";import ue from"ejs";var S=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(()=>{j.copySync(t,h.join(this.targetDir,r))})}rename(t,r){this.fileMiddlewares.push(()=>{j.renameSync(h.join(this.targetDir,t),h.join(this.targetDir,r))})}render(t,r,o){this.fileMiddlewares.push(()=>{j.outputFileSync(h.join(this.targetDir,r),ue.render(j.readFileSync(t,"utf-8"),o))})}async generate(){this.fileMiddlewares.forEach(t=>t()),j.writeFileSync(h.join(this.targetDir,"package.json"),JSON.stringify(this.pkg,null,2))}};import d from"chalk";import{input as ge,checkbox as de,select as fe}from"@inquirer/prompts";import{select as le}from"@inquirer/prompts";var m=async e=>await le({message:e,choices:[{name:"Yes",value:!0},{name:"No",value:!1}]});var I=async()=>await ge({message:`Enter your ${d.yellow("project name")}:`,required:!0,validate:e=>/[\\/:*?"<>|]/.test(e)?'Project name cannot contain special characters like \\ / : * ? " < > |':!0}),H=async()=>{let e=await m(`Do you want to use ${d.yellow.bold("TypeScript")} in your project?`),t=await de({message:`Please select the ${d.yellow("features")} to include:`,choices:[{name:"Eslint",value:"eslint"},{name:"Prettier",value:"prettier"},{name:"Pinia",value:"pinia"},{name:"Vue-Router",value:"vue-router"},{name:"Commitizen",value:"commitizen"}]}),r=t.includes("eslint"),o=t.includes("prettier"),i=t.includes("pinia"),n=t.includes("vue-router"),s=t.includes("commitizen"),p=!1;i&&(p=await m(`Do you want to use ${d.yellow.bold("pinia-plugin-persistedstate")} for Pinia state persistence?`));let A=!1,L=!1;if(n){let E=await fe({message:`Select the ${d.yellow("Vue-Router mode")} to use:`,choices:[{name:"HTML5 Mode",value:"html5"},{name:"Hash Mode",value:"hash"}]});A=E.includes("html5"),L=E.includes("hash")}let N=!1;(r||o)&&(N=await m(`Do you want to use ${d.yellow.bold("Husky")} for Git hooks?`));let J=!1;return N&&(J=await m(`Do you want to use ${d.yellow.bold("lint-staged")} to run linters on staged files?`)),{useTypescript:e,useEslint:r,usePrettier:o,usePinia:i,useVueRouter:n,usePiniaPluginPersistedstate:p,useHusky:N,useLintStaged:J,useCommitizen:s,useHTML5Mode:A,useHashMode:L}};import ye from"figlet";var je=async e=>{try{return await ye.text(e,{font:"Big Money-se",horizontalLayout:"default",verticalLayout:"default",width:80,whitespaceBreak:!0})}catch(t){console.log("Something went wrong..."),console.dir(t)}},F=je;import he from"chalk";function Se(e,t,r){t/=100,r/=100;let o=s=>(s+e/30)%12,i=t*Math.min(r,1-r),n=s=>r-i*Math.max(-1,Math.min(o(s)-3,Math.min(9-o(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 o=r/e.length*360,[i,n,s]=Se(o,100,50);return he.rgb(i,n,s)(t)}).join("")}var G=ke;import y from"chalk";import M from"boxen";var w=console.log,P=[22,198,12],f,V=(e,{useEslint:t,usePrettier:r,useHusky:o})=>{f=t?"pnpm i && pnpm lint":r?"pnpm i && pnpm format":"pnpm i",f=o?`cd ${e} && git init && `+f:`cd ${e} && `+f,w(y.cyan(M(y.rgb(...P)(`
|
|
3
3
|
${f}
|
|
4
4
|
`),{title:"commands",titleAlignment:"center"})))},k,_=(e,{useHusky:t,useCommitizen:r})=>{k=t?`cd ${e} && git add .`:`cd ${e} && git init && git add .`,k+=` && ${r?"pnpm commit":'git commit -m "Initial commit"'}`,w(y.cyan(M(y.rgb(...P)(`
|
|
5
5
|
${k}
|
|
@@ -7,7 +7,7 @@ import De from"path";import C from"fs-extra";import{select as ae}from"@inquirer/
|
|
|
7
7
|
To set up Commitizen, run the following command:
|
|
8
8
|
`),v=`cd ${e} && pnpm i -g commitizen && commitizen init cz-conventional-changelog --pnpm --save-dev --save-exact`,w(y.cyan(M(y.rgb(...P)(`
|
|
9
9
|
${v}
|
|
10
|
-
`),{title:"commands",titleAlignment:"center"}))))},Y=async()=>{w(G(await F("BANANA")))},T=async e=>{w(G(e))};import Pe from"fs-extra";import{fileURLToPath as we}from"url";var a=we(new URL("../dist/template",import.meta.url));import
|
|
10
|
+
`),{title:"commands",titleAlignment:"center"}))))},Y=async()=>{w(G(await F("BANANA")))},T=async e=>{w(G(e))};import Pe from"fs-extra";import{fileURLToPath as we}from"url";var a=we(new URL("../dist/template",import.meta.url));import c from"path";var U=(e,t)=>{let r=t.useTypescript?c.join(a,"base","TS"):c.join(a,"base");e.writePkg(Pe.readJSONSync(c.join(r,"static","package.json"))),e.copy(c.join(r,"static"),""),e.rename("_gitignore",".gitignore"),e.render(c.join(r,"ejs","App.vue.ejs"),c.join("src","App.vue"),{...t}),e.render(c.join(r,"ejs",t.useTypescript?"main.ts.ejs":"main.js.ejs"),c.join("src",t.useTypescript?"main.ts":"main.js"),{...t}),e.render(c.join(r,"ejs","README.md.ejs"),"README.md",{projectName:e.projectName})};import q from"fs-extra";import u from"path";var K=(e,t)=>{let{usePinia:r,usePiniaPluginPersistedstate:o,useTypescript:i}=t;if(!r)return;let n=i?u.join(a,"pinia","TS"):u.join(a,"pinia");if(e.extendDepsPkg(q.readJSONSync(u.join(n,"package.json"))),e.copy(u.join(n,i?"counter.ts":"counter.js"),u.join("src","stores",i?"counter.ts":"counter.js")),!o)return;let s=u.join(n,"pinia-plugin-persistedstate");e.extendDepsPkg(q.readJSONSync(u.join(s,"package.json"))),e.copy(u.join(s,i?"key.ts":"key.js"),u.join("src","stores",i?"key.ts":"key.js"))};import Q from"fs-extra";import x from"path";var W=(e,t)=>{let{useEslint:r,usePrettier:o,useTypescript:i}=t;if(!r)return;let n=i?x.join(a,"eslint","TS"):x.join(a,"eslint"),s=Q.readJSONSync(x.join(n,"package.json"));e.extendDevDepsPkg(s),e.extendScriptsPkg(s),e.render(x.join(n,i?"eslint.config.ts.ejs":"eslint.config.js.ejs"),i?"eslint.config.ts":"eslint.config.js",{usePrettier:o}),o&&e.extendDevDepsPkg(Q.readJSONSync(x.join(n,"prettierPkg.json")))};import xe from"fs-extra";import b from"path";var X=(e,t)=>{let{usePrettier:r}=t;if(!r)return;let o=b.join(a,"prettier"),i=xe.readJSONSync(b.join(o,"package.json"));e.extendDevDepsPkg(i),e.extendScriptsPkg(i),e.copy(b.join(o,".prettierrc"),".prettierrc"),e.copy(b.join(o,".prettierignore"),".prettierignore")};import ve from"fs-extra";import l from"path";var Z=(e,t)=>{let{useVueRouter:r,usePiniaPluginPersistedstate:o,useTypescript:i,useHTML5Mode:n,useHashMode:s}=t;if(!r)return;let p=i?l.join(a,"vue-router","TS"):l.join(a,"vue-router");e.extendDepsPkg(ve.readJSONSync(l.join(p,"package.json"))),e.copy(l.join(p,"static"),"src"),e.render(l.join(p,"ejs","AboutView.vue.ejs"),l.join("src","views","AboutView.vue"),{usePiniaPluginPersistedstate:o}),e.render(l.join(p,"ejs","router",i?"index.ts.ejs":"index.js.ejs"),l.join("src","router",i?"index.ts":"index.js"),{useHTML5Mode:n,useHashMode:s})};import Te from"fs-extra";import g from"path";var ee=(e,t)=>{let{useEslint:r,usePrettier:o,useHusky:i,useLintStaged:n}=t;if(!i)return;let s=g.join(a,"husky"),p=Te.readJSONSync(g.join(s,"package.json"));e.extendDevDepsPkg(p),e.extendScriptsPkg(p),e.copy(g.join(s,"_"),g.join(".husky","_")),e.rename(g.join(".husky","_","_gitignore"),g.join(".husky","_",".gitignore")),e.render(g.join(s,"pre-commit.ejs"),g.join(".husky","pre-commit"),{useEslint:r,usePrettier:o,useLintStaged:n})};import $ from"fs-extra";import D from"path";var te=(e,t)=>{let{useEslint:r,usePrettier:o,useLintStaged:i}=t;if(!i)return;let n=D.join(a,"lintStaged"),s=$.readJSONSync(D.join(n,"package.json"));e.extendDevDepsPkg(s),e.extendScriptsPkg(s);let p={};r?p=$.readJSONSync(D.join(n,"eslint.json")):o&&(p=$.readJSONSync(D.join(n,"prettier.json"))),e.writePkg(p)};import be from"fs-extra";import re from"path";var oe=(e,t)=>{let{useCommitizen:r}=t;if(!r)return;let o=re.join(a,"commitizen"),i=be.readJSONSync(re.join(o,"package.json"));e.extendScriptsPkg(i)};var ie=async e=>{let t=await H();return U(e,t),K(e,t),W(e,t),X(e,t),Z(e,t),ee(e,t),te(e,t),oe(e,t),t};import{execa as z}from"execa";import O from"chalk";var ne=async e=>{if(!await m(`Do you want to ${O.yellow.bold("execute")} the above commands now?`))return;await z({shell:!0,stdio:"inherit"})`${f}`;let t=!1;e.useCommitizen&&(t=await m(`Do you want to ${O.yellow.bold("install the commitizen")} now?`),t&&await z({shell:!0,stdio:"inherit"})`${v}`),!(e.useCommitizen&&!t)&&await m(`Do you want to ${O.yellow.bold("execute the git")} commands now?`)&&await z({shell:!0,stdio:"inherit"})`${k}`};import Ne from"ora";import Ce from"chalk";var se=async()=>{await Y();let e=await I(),t=De.join(process.cwd(),e);await R(e,t);let r=new S(e,t),o=await ie(r),i=Ne("Generating files...").start();await r.generate(),i.succeed("Files generated successfully."),T(`
|
|
11
11
|
Project initialization complete. You may execute the following commands:
|
|
12
12
|
`),V(e,o),B(e,o),T(`
|
|
13
13
|
And initialize Git using the following commands:
|