@lunoxjs/core
Version:
Laravel-Flavoured NodeJs framework
6 lines (5 loc) • 2.99 kB
JavaScript
;var n=require("commander"),l=require("path"),e=require("colorette"),r=require("fs"),v=require("child_process");const t=o=>{const i=v.spawn(o,{stdio:["ignore","inherit","inherit"],shell:!0});return new Promise((c,m)=>{i.on("close",p=>{p===0?c():console.log(e.red(`artisan command exited with code ${p}`))}),i.on("error",m)})},d=async(o,i)=>{try{await i()}catch{console.log(e.bold(e.yellowBright(o+" failed")))}},s=(o,i)=>process.platform=="win32"?`set ${o}=${i}&&`:`${o}=${i}`,u=o=>t(o?"rollup -cw":`${s("NODE_ENV","production")} rollup -c`),w=()=>t(`${s("NODE_ENV","production")} vite build --outDir dist/server --ssr entry-server.ts`),y=()=>t(`${s("NODE_ENV","production")} vite build --outDir dist/client`),h=()=>{t("rollup -cw"),setTimeout(()=>{t("nodemon -q -w dist dist/index.mjs")},3e3)},b=o=>t(o?"nodemon -q -w dist dist/index.mjs":`${s("NODE_ENV","production")} node dist/index.mjs`),a=o=>{r.existsSync(o)&&(r.lstatSync(o).isFile()?r.unlinkSync(o):(r.readdirSync(o).forEach(i=>{a(`${o}/${i}`)}),r.rmdirSync(o)))},g=(o,i)=>{r.existsSync(o)&&(r.lstatSync(o).isFile()?r.copyFileSync(o,i):(r.existsSync(i)||r.mkdirSync(i),r.readdirSync(o).forEach(c=>{g(`${o}/${c}`,`${i}/${c}`)})))},f=e.greenBright(require("../package.json").version);n.program.version(e.blue("Lunox Framework ")+"version "+f),n.program.description("Laravel-Flavoured NodeJs framework"),n.program.showHelpAfterError(!0),n.program.command("prod").description("build lunox application for production").option("--with-view","compile view using vite").action(o=>{d("build production",async()=>{a(l.join(process.cwd(),"dist")),console.log(e.blueBright("compiling ts file...")),await u(!1),console.log(e.green(`ts file compiled to ./dist folder
`)),o.withView&&(console.log(e.blueBright("building server side view components...")),await w(),console.log(e.green(`view are compiled to ./dist/server folder
`)),console.log(e.blueBright("building client side view components...")),await y(),console.log(e.green(`view are compiled to ./dist/client folder
`))),console.log(e.blueBright("copying assets...")),g(l.join(process.cwd(),"public"),l.join(process.cwd(),"dist/public")),console.log(e.green("done"))})}),n.program.command("watch").description("watch lunox application for development").action(()=>{d("build development",async()=>{console.log(e.blueBright("compiling ts file...")),h()})}),n.program.command("dev").description("build lunox application for development").action(async()=>{d("build development",async()=>{a(l.join(process.cwd(),"dist")),console.log(e.blueBright("compiling ts file...")),await u(!0)})}),n.program.command("serve").description("serve lunox application for production").option("--dev","serve in development mode").action(async o=>{try{console.log(e.blueBright("serving application...")),await b(o.dev)}catch(i){i.includes("ENOENT")&&console.log(e.yellowBright("Oops, cannot serving application. Are you forget to build your application?"))}}),n.program.parse();