edon-service
Version:
一个开箱即用的前端构建工具,基于Webpack封装,简化了前端项目的开发与构建流程。无论是开发环境的热更新、资源处理,还是生产环境的代码优化、打包部署,都能提供便捷的配置和稳定的性能
21 lines (20 loc) • 23.1 kB
JavaScript
;var ze=Object.create;var S=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var Le=Object.getOwnPropertyNames;var Be=Object.getPrototypeOf,We=Object.prototype.hasOwnProperty;var Ue=(e,r)=>{for(var o in r)S(e,o,{get:r[o],enumerable:!0})},Q=(e,r,o,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of Le(r))!We.call(e,t)&&t!==o&&S(e,t,{get:()=>r[t],enumerable:!(s=Oe(r,t))||s.enumerable});return e};var a=(e,r,o)=>(o=e!=null?ze(Be(e)):{},Q(r||!e||!e.__esModule?S(o,"default",{value:e,enumerable:!0}):o,e)),Ve=e=>Q(S({},"__esModule",{value:!0}),e);var Qe={};Ue(Qe,{default:()=>qe});module.exports=Ve(Qe);var J=a(require("webpack")),Fe=a(require("webpack-dev-server")),_e=require("webpack-merge");var Ne=a(require("fs-extra")),G=a(require("portfinder")),K=require("edon-helper"),X=require("url"),He={};function n(){return process.env.NODE_ENV==="production"}var Y=async(e,r)=>{let o=3e3,s=await(0,K.getDotEnvObject)(e);if(s.PORT&&(o=+JSON.parse(s.PORT)),r&&(o=r),o===80)return 80;try{return await G.default.getPortPromise({port:o,stopPort:o+10})}catch(t){throw new Error((t==null?void 0:t.message)||"No open ports found")}},Z=()=>{if(typeof __filename<"u")return __filename;try{let e=He.url;if(!e)throw new Error("\u8BF7\u5728 ESM \u73AF\u5883\u4E0B\u4F20\u5165 import.meta");return(0,X.fileURLToPath)(e)}catch{return typeof __filename<"u"?__filename:""}};var ee=require("ts-node"),oe=require("edon-define"),w=require("edon-helper");(0,ee.register)({compilerOptions:{module:"CommonJS"}});var R={entryPath:(0,w.joinRoot)("src/index.tsx"),outputPath:(0,w.joinRoot)("dist"),assetsPath:"assets",publicPath:"/",cdnAddress:"",antdDayjs:!1,autoTypingEnvTypeFile:!0,swagger:[],errorOverlay:!1,extraIncludes:[],forkTSChecker:!1,zipPassword:"123456",devServer:{},http2:!1,limit:10*1024,rem:{enable:!1},styleLoader:!1,cacheDirectory:(0,w.joinRoot)("node_modules",".cache","webpack"),statsDirectory:(0,w.joinRoot)("node_modules",".edon"),nodePolyfill:!1,legacy:{targets:{chrome:"53",safari:"10"},corejs:"3.24"},svgmin:!0,html:{template:(0,w.joinRoot)("public/index.html"),filename:"index.html",hash:n(),inject:"body",minify:{removeComments:n(),collapseWhitespace:n(),removeRedundantAttributes:n(),useShortDoctype:n(),removeEmptyAttributes:n(),removeStyleLinkTypeAttributes:n(),keepClosingSlash:n(),minifyJS:n(),minifyCSS:n(),minifyURLs:n()},chunksSortMode:"auto"}},j=async()=>{let e=await(0,oe.getDefineConfig)({});return{...R,...e,rem:{...R.rem,...e.rem},html:{...R.html,...e.html},legacy:{...R.legacy,...e.legacy}}};var k=a(require("path")),Me=a(require("webpack-chain"));var ie=a(require("mini-css-extract-plugin"));var ae=a(require("html-webpack-plugin")),le=require("clean-webpack-plugin");var f=a(require("chalk")),re=a(require("webpack")),A=a(require("path")),z=class{lastPercent=0;startTime=Date.now();lastUpdate=Date.now();changedFiles=[];isRunning=!1;apply(r){r.hooks.watchRun.tap("EnhancedProgressPlugin",o=>{o.modifiedFiles&&(this.changedFiles=Array.from(o.modifiedFiles)),this.isRunning||(this.isRunning=!0,this.lastPercent=0,this.startTime=Date.now(),this.lastUpdate=Date.now(),console.log(f.default.cyan(`
\u{1F504} \u5F00\u59CB\u7F16\u8BD1...`))),this.changedFiles.length>0&&(this.changedFiles.length===1?this.changedFiles.forEach(s=>{let t=A.default.relative(process.cwd(),s);console.log(`
${f.default.yellow("\u{1F4DD} \u53D8\u66F4\u6587\u4EF6: ")}${f.default.gray(`${t}`)}
`)}):(console.log(f.default.yellow(`
\u{1F4DD} \u53D8\u66F4\u6587\u4EF6:`)),this.changedFiles.forEach(s=>{let t=A.default.relative(process.cwd(),s);console.log(f.default.gray(` - ${t}`))}),console.log(`
`)))}),new re.default.ProgressPlugin(o=>{if(!this.isRunning)return;let s=Date.now();if(s-this.lastUpdate<100)return;let t=Math.floor(o*100);if(t>=this.lastPercent){process.stdout.clearLine(0),process.stdout.cursorTo(0);let i=this.generateProgressBar(t);process.stdout.write(`\u{1F680} ${f.default.cyan("\u7F16\u8BD1")} ${i} ${f.default.green(t+"%")}`),this.lastPercent=t,this.lastUpdate=s}}).apply(r),r.hooks.done.tap("EnhancedProgressPlugin",o=>{var c,p,l;let t=(Date.now()-this.startTime)/1e3;this.isRunning=!1,process.stdout.clearLine(0),process.stdout.cursorTo(0);let i=this.generateProgressBar(100);if(process.stdout.write(`\u{1F680} ${f.default.cyan("\u7F16\u8BD1")} ${i} ${f.default.green("100%")}
`),o.hasErrors()||o.hasWarnings()){let u=o.toJson();if(o.hasErrors()){(c=u.errors)==null||c.forEach(d=>{console.log(f.default.gray(`
- ${d.message}`))}),console.log(f.default.red(`
\u274C \u7F16\u8BD1\u9519\u8BEF: ${(p=u.errors)==null?void 0:p.length}\u5904
`));return}o.hasWarnings()&&(console.log(f.default.yellow(`
\u26A0\uFE0F \u7F16\u8BD1\u8B66\u544A:`)),(l=u.warnings)==null||l.forEach(d=>{console.log(f.default.yellow(` - ${d.message}`))}))}console.log(f.default.green(`
\u2705 \u7F16\u8BD1\u5B8C\u6210\uFF01\u231B \u8017\u65F6: ${t.toFixed(2)}s
`))})}generateProgressBar(r){let s=Math.floor(20*r/100),t=20-s,i;return r===100?i="#".repeat(s-1)+"-".repeat(t):i="#".repeat(s)+"\u{1F680}"+"-".repeat(Math.max(0,t-1)),`[${i}]`}},te=z;var ce=a(require("@pmmmwh/react-refresh-webpack-plugin")),pe=a(require("copy-webpack-plugin"));var m=a(require("chalk")),se=a(require("webpack")),I=require("edon-helper"),O=class{startTime=0;lastPercent=0;lastUpdate=0;isRunning=!1;apply(r){r.hooks.beforeRun.tap("BuildCompilePlugin",()=>{this.startTime=Date.now(),this.lastPercent=0,this.lastUpdate=Date.now(),this.isRunning=!0}),new se.default.ProgressPlugin(o=>{if(!this.isRunning)return;let s=Date.now();if(s-this.lastUpdate<100)return;let t=Math.floor(o*100);if(t!==this.lastPercent){process.stdout.clearLine(0),process.stdout.cursorTo(0);let i=this.generateProgressBar(t);process.stdout.write(`\u{1F528} ${m.default.blue("\u6784\u5EFA\u4E2D")} ${i} ${m.default.green(t+"%")}`),this.lastPercent=t,this.lastUpdate=s}}).apply(r),r.hooks.done.tap("BuildCompilePlugin",o=>{var c,p;this.isRunning=!1;let t=(Date.now()-this.startTime)/1e3;if(process.stdout.clearLine(0),process.stdout.cursorTo(0),o.hasErrors()){console.log(m.default.red(`
\u274C \u6784\u5EFA\u5931\u8D25\uFF0C\u5B58\u5728\u9519\u8BEF:`)),(c=o.toJson().errors)==null||c.forEach((u,d)=>{console.log(m.default.red(`
\u9519\u8BEF ${d+1}:`)),console.log(m.default.red(` ${u.message}`)),u.stack&&console.log(m.default.gray(` \u5806\u6808: ${u.stack.substring(0,200)}...`))}),console.log(m.default.red(`
\u8BF7\u4FEE\u590D\u4E0A\u8FF0\u9519\u8BEF\u540E\u91CD\u65B0\u6784\u5EFA\u3002`));return}o.hasWarnings()&&(console.log(m.default.yellow(`
\u26A0\uFE0F \u6784\u5EFA\u5B58\u5728\u8B66\u544A:`)),(p=o.toJson().warnings)==null||p.forEach((u,d)=>{console.log(m.default.yellow(` ${d+1}. ${u.message.substring(0,150)}`))}));let i=this.displayBuildStats(o);console.log(m.default.green(`
\u2705 \u6784\u5EFA\u6210\u529F\uFF01`)),console.log(m.default.gray(`\u603B\u8BA1: ${i}`)),console.log(m.default.gray(`\u603B\u8017\u65F6: ${t.toFixed(2)}s`)),console.log(m.default.gray(`\u5B8C\u6210\u65F6\u95F4: ${new Date().toLocaleTimeString()}
`))})}generateProgressBar(r){let s=Math.floor(20*r/100),t=20-s,i;return r===100?i="#".repeat(s-1)+"-".repeat(t):i="#".repeat(s)+"\u{1F680}"+"-".repeat(Math.max(0,t-1)),`[${i}]`}displayBuildStats(r){let s=r.toJson().assets||[];if(s.length===0)return(0,I.convertBytesSize)(0);let t=s.length>10,i=t?`\uFF08\u5171${s.length}\u4EFD\u6587\u4EF6\uFF0C\u53EA\u663E\u793A\u524D10\u4EFD\uFF09`:"";console.log(m.default.cyan(`
\u{1F4CA} \u6784\u5EFA\u7ED3\u679C\u7EDF\u8BA1${i}:`)),[...s].sort((l,u)=>(u.size||0)-(l.size||0)).filter(l=>!l.name.includes("/images/")).slice(0,10).forEach(l=>{l.name&&l.size&&console.log(` ${m.default.gray("-")} ${m.default.white(l.name.padEnd(45," "))} ${m.default.green((0,I.convertBytesSize)(l.size))}`)}),t&&console.log(` ${m.default.gray("-")} \u5176\u4ED6\u7701\u7565...`);let p=s.reduce((l,u)=>l+(u.size||0),0);return(0,I.convertBytesSize)(p)}},ne=O;var T=require("edon-helper"),ue=require("vue-loader"),me=a(require("unplugin-auto-import/webpack")),de=a(require("unplugin-vue-components/webpack")),L=require("unplugin-vue-components/resolvers"),fe=a(require("webpack")),ge=a(require("fork-ts-checker-webpack-plugin")),he=(e,r,o)=>{let{html:s,forkTSChecker:t,framework:i,uiFramework:c,elementPlusOptions:p}=r,l=i==="vue",u=i==="react",d=c==="element-plus";return l&&e.plugin("vue-loader-plugin").use(ue.VueLoaderPlugin).end(),d&&(e.plugin("auto-import").use((0,me.default)({resolvers:[(0,L.ElementPlusResolver)()],dts:`${(p==null?void 0:p.dtsDir)||"./types"}/auto-import.d.ts`,include:[/\.vue$/,/\.vue\?vue/,/\.[tj]sx?$/],exclude:[/[\\/]node_modules[\\/]/]})),e.plugin("components").use((0,de.default)({resolvers:[(0,L.ElementPlusResolver)({importStyle:(p==null?void 0:p.importStyle)||"css"})],dts:`${(p==null?void 0:p.dtsDir)||"./types"}/components.d.ts`,include:[/\.vue$/,/\.vue\?vue/,/\.[tj]sx?$/],exclude:[/[\\/]node_modules[\\/]/]}))),n()?(e.plugin("build-compile-info").use(ne),e.plugin("mini-css-extract").use(ie.default,[{filename:"assets/css/[name].[contenthash:8].css",chunkFilename:"assets/css/[name].[contenthash:8].chunk.css"}])):(e.plugin("clean").use(le.CleanWebpackPlugin),e.plugin("compile-info").use(te),u&&e.plugin("react-refresh").use(ce.default).tap(()=>[{overlay:!1,include:/\.(jsx|tsx)$/,exclude:[/node_modules/,/\.test\.(js|ts)x?$/]}]),t&&e.plugin("fork-ts-checker").use(ge.default,[{typescript:{configFile:(0,T.joinRoot)("tsconfig.json"),memoryLimit:4096},async:!0,issue:{include:[{file:"**/*.{ts,tsx,vue}"},{file:"**/*.{js,jsx,vue}"}],exclude:[{file:"**/node_modules/**/*"}]}}])),e.plugin("define").use(fe.default.DefinePlugin,[{"process.env":o,env:o}]),e.plugin("html").use(ae.default,[{template:(s==null?void 0:s.template)||(0,T.joinRoot)("public/index.html"),filename:(s==null?void 0:s.filename)||"index.html",inject:(s==null?void 0:s.inject)==="body"?"body":(s==null?void 0:s.inject)==="head"?"head":!0,minify:n()?{...s==null?void 0:s.minify,collapseWhitespace:!0,removeComments:!0}:!1}]),e.plugin("copy-public").use(pe.default,[{patterns:[{from:(0,T.joinRoot)("public"),to:e.output.get("path"),globOptions:{ignore:["**/index.html","**/.DS_Store","**/unused-*","**/large-assets/**/*"]},noErrorOnMissing:!0}]}]),e};var B=require("edon-helper"),ve=e=>{let r=e.module.rule("images").test(/\.(png|jpe?g|gif|webp)$/i);return r.set("type","asset"),r.set("generator",{filename:`assets/images/${n()?"[name].[contenthash:8][ext]":"[name].[hash:8][ext]"}`}),r.set("parser",{dataUrlCondition:{maxSize:n()?4*1024:10*1024}}),e.module.rule("svg-resource").test(/\.svg$/).exclude.add(/\.inline\.svg$/).add(/src\/icons\/svg\//).end().set("type","asset/resource").set("generator",{filename:`assets/svgs/${n()?"[name].[contenthash:8][ext]":"[name].[hash:8][ext]"}`}),e.module.rule("svg-component").test(/(\.inline\.svg$|src\/icons\/svg\/.*\.svg$)/).use("@svgr/webpack").loader(B.safeRequire.resolve("@svgr/webpack")).options({svgo:n(),svgoConfig:n()?{plugins:[{name:"removeViewBox",active:!1},{name:"removeEmptyAttrs",active:!0},{name:"cleanupIds",active:!0},{name:"removeUselessDefs",active:!0}]}:{plugins:[{name:"removeViewBox",active:!1}]},icon:!0,dimensions:!1}).end().use("url-loader").loader(B.safeRequire.resolve("url-loader")).options({limit:10*1024,name:`assets/svgs/${n()?"[name].[contenthash:8][ext]":"[name].[hash:8][ext]"}`}),e};var W=a(require("mini-css-extract-plugin"));var h=require("edon-helper"),ye=a(require("autoprefixer")),be=a(require("postcss-pxtorem")),we=a(require("@tailwindcss/postcss")),$=(e,r,o,s)=>{let{rem:t={},framework:i,uiFramework:c}=s||{},p=i==="vue",l=c==="tailwind",u=e.module.rule(r).test(o),d=!n(),b=n()?{}:{injectType:"styleTag",esModule:!0},_=E=>E.use("css-loader").loader(h.safeRequire.resolve("css-loader")).options({importLoaders:2,sourceMap:d,modules:{auto:Ae=>/\.module\.(css|less)$/.test(Ae),localIdentName:n()?"[local]-[hash:base64:8]":"[local]-[hash:base64:5]"}}).end().use("postcss-loader").loader(h.safeRequire.resolve("postcss-loader")).options({postcssOptions:{parser:"postcss-safe-parser",plugins:[l&&(0,we.default)(),(0,ye.default)(),t!=null&&t.enable?(0,be.default)((0,h.isEmpty)(t==null?void 0:t.options)?{rootValue:10,propList:["*"],selectorBlackList:["ignore-","#root","html"],replace:!0,mediaQuery:!1,minPixelValue:1}:t==null?void 0:t.options):!1].filter(Boolean)},sourceMap:d}).end();return p?(_(u.oneOf("vue-sfc-style").resourceQuery(/\?vue/).use("vue-style-loader").loader(h.safeRequire.resolve("vue-style-loader")).options({sourceMap:d}).end()),_(u.oneOf("vue-normal-style").use("style-loader").loader(n()?W.default.loader:h.safeRequire.resolve("style-loader")).when(Object.keys(b).length>0,E=>E.options(b)).end())):_(u.use("style-loader").loader(n()?W.default.loader:h.safeRequire.resolve("style-loader")).when(Object.keys(b).length>0,E=>E.options(b)).end()),u};var y=require("edon-helper"),xe=a(require("os"));var C=require("edon-helper"),Ce=a(require("os")),ke=(e,r)=>{e.module.rule("vue").test(/\.vue$/).use("vue-loader").loader(C.safeRequire.resolve("vue-loader")).options({cacheDirectory:!n(),cacheIdentifier:`vue-loader-${n()?"prod":"dev"}`});let o=!0,s={};try{s={jsc:{parser:{syntax:"typescript",tsx:!0,jsx:!0},target:n()?"es2015":"es2020",externalHelpers:n(),transform:{}},cacheDirectory:!n(),cacheCompression:n(),sourceMaps:!n(),isModule:!0}}catch{o=!1}let t=e.module.rule("vue:script").enforce("post").test(/\.vue$/).resourceQuery(/type=script/);n()||t.use("thread-loader").loader(C.safeRequire.resolve("thread-loader")).options({workers:Math.max(2,Math.min(Ce.default.cpus().length-1,4))}).end(),o?t.use("swc-loader").loader(C.safeRequire.resolve("swc-loader")).options({...s,jsc:{...s.jsc||{},parser:{syntax:"typescript",tsx:!0,jsx:!0}}}):t.use("babel-loader").loader(C.safeRequire.resolve("babel-loader")).options({presets:[["@babel/preset-env"],["@babel/preset-typescript",{allowDeclareFields:!0,allExtensions:!0}]],cacheDirectory:!0}),e.module.rule("vue:template-post").enforce("post").test(/\.vue$/).resourceQuery(/type=template/).use("babel-loader").loader(C.safeRequire.resolve("babel-loader")).options({presets:[["@babel/preset-typescript",{allowDeclareFields:!0,allExtensions:!0}]],cacheDirectory:!0})};var Pe=(e,r)=>{let{framework:o}=r,s=o==="vue",t=o==="react";s&&ke(e,r);let i=e.module.rule("compile").test(/\.[jt]sx?$/).exclude.add(/node_modules/).end().resourceQuery({not:[/vue/]});n()||i.use("thread-loader").loader(y.safeRequire.resolve("thread-loader")).options({workers:Math.max(2,Math.min(xe.default.cpus().length-1,4))}).end();try{let c={jsc:{parser:{syntax:"typescript",tsx:!0,jsx:!0},target:n()?"es2015":"es2020",externalHelpers:n(),transform:{}},cacheDirectory:!n(),cacheCompression:n(),sourceMaps:!n(),isModule:!0};t&&(c.jsc.transform.react={refresh:!n(),runtime:"automatic",development:!n()}),i.use("swc-loader").loader(y.safeRequire.resolve("swc-loader")).options({...c})}catch{i.use("babel-loader").loader(y.safeRequire.resolve("babel-loader")).options({presets:["@babel/preset-env","@babel/preset-typescript","@babel/preset-react"],plugins:[n()&&"@babel/plugin-transform-runtime",!n()&&"react-refresh/babel"].filter(Boolean),cacheDirectory:!0})}return ve(e),$(e,"css",/\.css$/,r),$(e,"less",/\.less$/,r).use("less-loader").loader(y.safeRequire.resolve("less-loader")).options({lessOptions:{javascriptEnabled:!0,math:"always"},sourceMap:!n()}),$(e,"scss",/\.s[ac]ss$/,r).use("sass-loader").loader(y.safeRequire.resolve("sass-loader")).options({sourceMap:!n(),sassOptions:{outputStyle:n()?"compressed":"expanded"}}),$(e,"stylus",/\.styl$/,r).use("stylus-loader").loader(y.safeRequire.resolve("stylus-loader")).options({sourceMap:!n()}),e};var U=require("esbuild-loader"),Ee=(e,r)=>{let{framework:o,uiFramework:s}=r,t=o==="vue",i=o==="react",c=s==="antd",p=s==="element-plus";return e.optimization.splitChunks({chunks:"all",minSize:2e4,maxSize:7e4,minChunks:2,maxAsyncRequests:30,maxInitialRequests:30,cacheGroups:{vendors:{test:/[\\/]node_modules[\\/]/,priority:-10,reuseExistingChunk:!0},...i&&{react:{test:/[\\/]node_modules[\\/](react|react-dom|react-router)[\\/]/,name:"react-vendor",priority:20,reuseExistingChunk:!0}},...t&&{vue:{test:/[\\/]node_modules[\\/](vue|vue-router|pinia)[\\/]/,name:"vue-vendor",priority:20,reuseExistingChunk:!0}},...c&&{antd:{test:/[\\/]node_modules[\\/]antd[\\/]/,name:"antd-vendor",priority:15,reuseExistingChunk:!0}},...p&&{elementPlus:{test:/[\\/]node_modules[\\/]element-plus[\\/]/,name:"element-vendor",priority:15,reuseExistingChunk:!0}}}}).runtimeChunk("multiple"),n()?(e.optimization.minimizer("js").use(U.EsbuildPlugin,[{target:t?"es2016":"es2015",css:!1,minify:!0,legalComments:"none",drop:["console","debugger"]}]),e.optimization.minimizer("css").use(U.EsbuildPlugin,[{target:"es2015",minify:!0,css:!0}]),e.optimization.usedExports(!0).concatenateModules(!0)):e.optimization.removeAvailableModules(!1).removeEmptyChunks(!1).splitChunks({chunks:"all",minSize:1/0}).minimize(!1),e};var $e=a(require("path")),De=a(require("fs-extra")),V=a(require("mini-css-extract-plugin")),Se=a(require("speed-measure-webpack-plugin")),Re=require("edon-helper"),je=require("webpack-bundle-analyzer"),Ie=(e,r,o)=>{var i,c,p;let{statsDirectory:s}=r,t=$e.default.join(s||(0,Re.joinRoot)("node_modules",".edon"),"webpack.config.js");if(De.default.writeFileSync(t,`module.exports = ${e.toString()}`,{encoding:"utf8"}),o.analyzer&&e.plugin("analyzer").use(je.BundleAnalyzerPlugin,[{analyzerMode:"server",analyzerHost:"localhost",analyzerPort:8888,reportFilename:"bundle-report.html",defaultSizes:"gzip",openAnalyzer:!0,generateStatsFile:!0,statsFilename:"stats.json",statsOptions:{source:!1,modules:!0,chunks:!0,assets:!0},excludeAssets:[/\.map$/],logLevel:"info"}]),o.speed){let l=e.toConfig(),u=(i=l==null?void 0:l.plugins)==null?void 0:i.filter(b=>!(b instanceof V.default));l.plugins=[...u];let d=new Se.default().wrap(l);return(p=(c=d==null?void 0:d.plugins)==null?void 0:c.push)==null||p.call(c,new V.default({})),d}return e};var D=require("edon-helper"),Te=(e,r,o)=>{let{errorOverlay:s,cacheDirectory:t}=r;return e.devServer.hot(!0).open(!0).port((o==null?void 0:o.port)||3e3).host((o==null?void 0:o.host)||"0.0.0.0").historyApiFallback(!0).merge({client:{logging:"none",overlay:{errors:s??!0,warnings:!1},progress:!0,webSocketTransport:"ws"},devMiddleware:{stats:{all:!1,errors:!0,warnings:!0,timings:!0},writeToDisk:!0},watchFiles:{paths:["src/**/*","public/**/*"],options:{aggregateTimeout:100,poll:300,followSymlinks:!1,ignored:/node_modules/}},static:{directory:(0,D.joinRoot)("public"),watch:{poll:300,ignored:/node_modules/}},headers:{"Access-Control-Allow-Origin":"*"}}),e.merge({cache:{type:"filesystem",buildDependencies:{config:[Z()],tsconfig:[(0,D.joinRoot)("tsconfig.json")],packagejson:[(0,D.joinRoot)("package.json")]},name:"development-cache",version:"1.0.0",cacheDirectory:t||(0,D.joinRoot)("node_modules",".cache","webpack"),compression:n()?"gzip":!1,maxAge:864e5},infrastructureLogging:{level:"none",debug:!1},stats:{logging:"none",loggingDebug:!1,loggingTrace:!1}}),e};var N=a(require("fs-extra")),v=require("edon-helper"),Je=async(e,r)=>{let o=new Me.default,s=await(0,v.getDotEnvObject)(e.mode),t=await j();await(0,v.generateEnvTypes)("edon-service",s,{framework:t==null?void 0:t.framework});let i=e.mode==="prod"?"production":"development";process.env.NODE_ENV=i,t.cacheDirectory&&N.default.ensureDirSync(t.cacheDirectory),t.statsDirectory&&N.default.ensureDirSync(t.statsDirectory);let{entryPath:c,outputPath:p,chainWebpack:l}=t;o.mode(i),o.set("target",["web",n()?"es5":void 0].filter(Boolean)),o.entry("index").add(c||(0,v.joinRoot)("src/index.tsx")).end(),o.output.path(p||(0,v.joinRoot)("dist")).publicPath("/").filename(`assets/js/[name]${n()?".[contenthash:8]":""}.js`).pathinfo(!n()),n()?e.sourceMap?o.devtool("hidden-source-map").end():o.devtool(!1).end():o.devtool("eval-cheap-module-source-map").end(),o.resolve.extensions.merge([".tsx",".ts",".json",".js",".jsx",".vue"]).end(),o.resolve.alias.set("src",k.default.resolve(process.cwd(),"src")).set("@",k.default.resolve(process.cwd(),"src")).set("assets",(0,v.joinRoot)("public/assets")).end(),t.framework==="react"?o.resolve.alias.set("react",k.default.resolve(process.cwd(),"node_modules/react")).set("react-dom",k.default.resolve(process.cwd(),"node_modules/react-dom")).end():t.framework==="vue"&&o.resolve.alias.set("vue",k.default.resolve(process.cwd(),"node_modules/vue")).end(),o.resolve.symlinks(!0).end(),o.performance.hints(!1),he(o,t,s),Pe(o,t),Ee(o,t),l&&await l(o,{isProd:n(),dotEnv:s,mode:e.mode}),n()||Te(o,t,r);let u=Ie(o,t,e);return e.speed?u:o.toConfig()},H=Je;var g=a(require("chalk")),M={padding:0,margin:0,borderStyle:"round",borderColor:"blue"},F=async()=>{let{default:e}=await import("boxen");return e},x={info:async(e,r={})=>{if(r.simple){console.log(g.default.blue(`\u2139\uFE0F ${e}`));return}let o=await F();console.log(o(g.default.blue(e),{...M,...r,borderColor:r.borderColor||"blue"}))},success:async(e,r={})=>{if(r.simple){console.log(g.default.green(`\u2705 ${e}`));return}let o=await F();console.log(o(g.default.green(e),{...M,...r,borderColor:r.borderColor||"green"}))},error:async(e,r={})=>{if(r.simple){console.error(g.default.red(`\u274C ${e}`));return}let o=await F();console.error(o(g.default.red(e),{...M,...r,borderColor:r.borderColor||"red"}))},warning:async(e,r={})=>{if(r.simple){console.warn(g.default.yellow(`\u26A0\uFE0F ${e}`));return}let o=await F();console.warn(o(g.default.yellow(e),{...M,...r,borderColor:r.borderColor||"yellow"}))},progress:async e=>{console.log(g.default.cyan(`\u{1F504} ${e}`))}};var P=require("edon-helper"),q=class{setEnv(r){process.env.NODE_ENV=r}checkArgv(r,o){r.mode||(o(),process.exit(1))}async start(r){this.setEnv(r.mode==="prod"?"production":"development");let o=await Y(r.mode,r.port),s=(0,P.getLocalIPs)(),t=await H(r,{port:o}),i=(0,J.default)(t),c=await j(),p={port:o,hot:!0,liveReload:!1,open:!1,compress:!0,host:"0.0.0.0",server:c.http2?"spdy":"http",historyApiFallback:!0,setupExitSignals:!1,allowedHosts:"all",static:{directory:(0,P.joinRoot)("public","source"),watch:!0},devMiddleware:{stats:"none",writeToDisk:!1},client:{logging:"warn",overlay:c.errorOverlay,progress:!0,reconnect:!0},watchFiles:{paths:[(0,P.joinRoot)("src"),(0,P.joinRoot)("public")],options:{followSymlinks:!0,ignored:["**/node_modules/**","**/.git/**","**/dist/**"],usePolling:!1,interval:100,aggregateTimeout:300,awaitWriteFinish:{stabilityThreshold:200,pollInterval:50}}}};if(!i)return Promise.reject(new Error("compiler is null"));let l=new Fe.default((0,_e.merge)(p,(c==null?void 0:c.devServer)||{}),i);if(await x.success("\u5F00\u53D1\u670D\u52A1\u5668\u542F\u52A8\u5728:",{simple:!0}),await x.success(`- \u672C\u5730\u8BBF\u95EE: http://localhost:${o}`,{simple:!0}),s.ipv4.length>0)if(s.ipv4.length===1)await x.success(`- IP\u8BBF\u95EE: http://${s.ipv4[0]}:${o}`,{simple:!0});else{await x.success("- \u7F51\u7EDC\u8BBF\u95EE (IPv4):",{simple:!0});for(let u of s.ipv4)await x.success(` http://${u}:${o}`,{simple:!0})}await l.start()}async build(r){this.setEnv(r.mode==="prod"?"production":"development");let o=await H(r),s=(0,J.default)(o);s==null||s.run(()=>{})}},qe=new q;