UNPKG

create-jaydee-app

Version:

This is a project created with Create Jaydee App.

3 lines (2 loc) 4.32 kB
#!/usr/bin/env node import{input as J,confirm as y,select as x}from"@inquirer/prompts";import h from"fs-extra";import a from"path";import{fileURLToPath as C}from"url";import{dirname as R}from"path";import d from"fs-extra";var r=(s,o)=>{let e=process.cwd();d.readdirSync(s).forEach(t=>{let g=`${s}/${t}`,c=d.statSync(g);if(c.isFile())if(t==="favicon.ico"){let p=d.readFileSync(g,"binary"),j=`${e}/${o}/${t}`;d.writeFileSync(j,p,"binary")}else{t==="_gitignore"&&(t=".gitignore");let p=d.readFileSync(g,"utf8"),j=`${e}/${o}/${t}`;d.writeFileSync(j,p,"utf8")}else c.isDirectory()&&(d.existsSync(`${e}/${o}/${t}`)||d.mkdirSync(`${e}/${o}/${t}`),r(`${s}/${t}`,`${o}/${t}`))})};import b from"path";import S from"fs-extra";import D from"sort-package-json";var v={"drizzle-kit":"^0.30.4","drizzle-orm":"^0.39.1","eslint-plugin-drizzle":"^0.2.3","@libsql/client":"^0.14.0","@trpc/client":"^11.0.0-rc.446","@trpc/server":"^11.0.0-rc.446","@trpc/react-query":"^11.0.0-rc.446","@trpc/next":"^11.0.0-rc.446","@tanstack/react-query":"^5.50.0",superjson:"^2.2.1","server-only":"^0.0.1","better-auth":"^1.1.18","@playwright/test":"^1.48.2"};var f=s=>{let{dependencies:o,devMode:e,projectDir:i}=s,t=S.readJSONSync(b.join(i,"package.json"));o.forEach(c=>{let p=v[c];e&&t.devDependencies?t.devDependencies[c]=p:t.dependencies&&(t.dependencies[c]=p)});let g=D(t);S.writeJSONSync(b.join(i,"package.json"),g,{spaces:2})};import{execSync as P}from"child_process";var $=s=>{try{P(`${s}`,{stdio:"inherit"})}catch(o){return console.error(`Failed to execute ${s}`,o),!1}return!0};var W=C(import.meta.url),l=R(W);async function A(){let s=[],o=process.cwd(),e=o,i="";await J({message:"What is your project name?",validate:n=>{if(!n)return"Please enter a project name";if(h.existsSync(n)&&n!==".")return`Directory with name ${n} already exists`;n!=="."&&(e=`${o}/${n}`,i=n,h.mkdirSync(e));let m=a.join(l,"../templates/base");return r(m,i),!0}});let t=await y({message:"Would you like to use tRPC?"});if(t){s.push("tRPC");let n=a.join(l,"../templates/trpc");r(n,i),f({dependencies:["@trpc/client","@trpc/server","@trpc/next","@trpc/react-query","@trpc/next","@tanstack/react-query","superjson","server-only"],devMode:!1,projectDir:e})}if(await y({message:"Would you like to use Drizzle?"})){s.push("Drizzle");let n=a.join(l,"../templates/drizzle");r(n,i),f({dependencies:["drizzle-orm","drizzle-kit","eslint-plugin-drizzle","@libsql/client"],devMode:!1,projectDir:e}),f({dependencies:["drizzle-kit","eslint-plugin-drizzle"],devMode:!0,projectDir:e});let m=a.join(e,"package.json"),u=h.readJSONSync(m);if(u.scripts={...u.scripts,"db:push":"drizzle-kit push","db:studio":"drizzle-kit studio","db:generate":"drizzle-kit generate","db:migrate":"drizzle-kit migrate"},h.writeJSONSync(m,u,{spaces:2}),t){let k=a.join(l,"../templates/trpc+drizzle");r(k,i)}let w=await y({message:"Would you like to use BetterAuth?"});if(w){s.push("Better Auth");let k=a.join(l,"../templates/betterauth");r(k,i),f({dependencies:["better-auth"],devMode:!1,projectDir:e})}if(w&&t){let k=a.join(l,"../templates/trpc+betterauth");r(k,i)}}let c=await y({message:"Would you like to use Playwright?"});if(c){s.push("Playwright");let n=a.join(l,"../templates/playwright");r(n,i),f({dependencies:["@playwright/test"],devMode:!0,projectDir:e});let m=a.join(e,"package.json"),u=h.readJSONSync(m);u.scripts={...u.scripts,e2e:"playwright test","e2e:ui":"playwright test --ui"},h.writeJSONSync(m,u,{spaces:2})}let p=await y({message:"Would you like to use GitHub Actions?"});if(p){s.push("Github Actions");let n=a.join(l,"../templates/githubactions");r(n,i)}if(p&&c){let n=a.join(l,"../templates/playwright+githubactions");r(n,i)}if(await y({message:"Would you like to initialize a git repository?"})&&$(`cd ${e} && git init`),await y({message:"Would you like to install the dependencies?"})){var z=await x({message:"What package manager would you like to use?",choices:["pnpm","yarn","npm"]});z==="npm"?$(`cd ${e} && npm install`):z==="yarn"?$(`cd ${e} && yarn install`):z==="pnpm"&&$(`cd ${e} && pnpm install`)}console.log(`\u{1F389} Successfully created ${i} with ${s.join(", ")}`),console.log("\u{1F680} Run the following commands to start the development server:"),console.log(`${i!==""?`\u{1F449} cd ${i} && `:""} ${z==="npm"?"npm run dev":z==="yarn"?"yarn dev":"pnpm run dev"}`)}A();