@mango-js/scripts
Version:
Scripts required for building and testing Mango applications
3 lines (2 loc) • 1.83 kB
JavaScript
import r from"fs/promises";import o from"path";import s from"chalk";import{fileURLToPath as w}from"url";import{Parcel as g}from"@parcel/core";import"ora";import L from"../util/NameMinifier.js";import j from"../util/detectLocales.js";const P=w(import.meta.url),l=o.dirname(P),{npm_package_config_nameMinifier_port:p=2023,npm_package_config_publicUrl:m="/",npm_package_config_browsers:b="> 0%",npm_package_config_cdn:y="self"}=process.env,T=!process.env.NETLIFY,k=T?".parcelrc.prod.compression":".parcelrc.prod",c=process.cwd(),n=o.join(c,"src"),u=o.join(n,"index.html"),t=o.join(c,"dist"),d=o.join(c,"public"),v=o.join(n,"locales"),f=o.join(c,".cache"),N=o.join(l,"..",k),_=async(e,a)=>{const h=await r.readdir(e,{withFileTypes:!0});await r.mkdir(a,{recursive:!0});for(const i of h)i.isDirectory()?await _(o.join(e,i.name),o.join(a,i.name)):await r.copyFile(o.join(e,i.name),o.join(a,i.name))},[E,O,U]=await j(v),C=new g({entries:u,config:N,cacheDir:f,mode:"production",defaultTargetOptions:{distDir:t,engines:{browsers:[b]},shouldOptimize:!0,outputFormat:"global",isLibrary:!0,publicUrl:m,shouldScopeHoist:!0,sourceMaps:!1},env:{NODE_ENV:"production",SRC_PATH:n,OUT_PATH:t,PUBLIC_URL:m,LOCALES:E.join(","),RTL_LOCALES:O.join(","),DEFAULT_LOCALE:U,MINIFIER_PORT:p,CDN:y},additionalReporters:[{packageName:"@mango-js/parcel-reporter-production",resolveFrom:l}]}),D=async()=>{try{try{await r.access(u)}catch{console.error(s.red.bold("\u2716 \u{1F6A8} No index.html file found in src directory")),process.exit(1)}await r.rm(f,{recursive:!0,force:!0}),await r.rm(t,{recursive:!0,force:!0}),await r.mkdir(t,{recursive:!0}),await r.mkdir(d,{recursive:!0}),await _(d,t),await C.run()}catch(e){console.error(s.red.bold(`\u2716 \u{1F6A8} Build failed with errors:
`)),e.diagnostics?console.error(e.diagnostics):console.error(e)}};new L(p,D);