@empjs/cli 3.0.0-beta.26 → 3.0.0-beta.28
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/helper/hmr/client.d.ts +0 -2
- package/dist/helper/hmr/config.d.ts +0 -14
- package/dist/helper/hmr/index.d.ts +0 -6
- package/dist/helper/hmr/overlay.d.ts +0 -6
- package/dist/index.js +13 -13
- package/dist/script/devServer.d.ts +0 -7
- package/dist/store/empConfig.d.ts +8 -1
- package/dist/store/empShareLib.d.ts +16 -2
- package/dist/store/rspack/plugin.d.ts +1 -2
- package/dist/types/config.d.ts +13 -1
- package/package.json +6 -8
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
declare const _default: {
|
|
2
|
-
path: string;
|
|
3
|
-
timeout: number;
|
|
4
|
-
overlay: boolean;
|
|
5
|
-
reload: boolean;
|
|
6
|
-
log: boolean;
|
|
7
|
-
warn: boolean;
|
|
8
|
-
name: string;
|
|
9
|
-
autoConnect: boolean;
|
|
10
|
-
overlayStyles: {};
|
|
11
|
-
overlayWarnings: boolean;
|
|
12
|
-
ansiColors: {};
|
|
13
|
-
};
|
|
14
|
-
export default _default;
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
var ot=Object.defineProperty;var l=(r,e)=>()=>(r&&(e=r(r=0)),e);var z=(r,e)=>{for(var t in e)ot(r,t,{get:e[t],enumerable:!0})};import{fileURLToPath as nt}from"node:url";import{dirname as pt}from"node:path";import{readFile as at}from"node:fs/promises";import me from"node:module";import G from"node:path";var he,lt,M,ct,fe,ue,ge=l(()=>{"use strict";he=nt(import.meta.url),lt=pt(he),M=async r=>{try{let e=await at(r);return JSON.parse(e)}catch(e){console.error(e)}},ct=me.createRequire(import.meta.url),fe=(r,e)=>{let t=ct;return e&&(t=me.createRequire(e)),t.resolve(r)},ue=G.resolve(lt,he).replace(`${G.sep}dist${G.sep}index.js`,"")});import E from"@rspack/core";import de from"fs";var H,ye,be=l(()=>{"use strict";H=class{store;async setup(e){this.store=e;let t=[this.define(),this.anylayze(),this.progress(),this.copy(),this.empShare(),this.minJs(),this.minCss()];await Promise.all(t)}async anylayze(){if(!this.store.cliOptions.analyze)return;let{default:{BundleAnalyzerPlugin:e}}=await import("webpack-bundle-analyzer");this.store.chain.plugin("bundleAnalyzerPlugin").use(e,[{}])}async define(){this.store.chain.plugin("definePlugin").use(E.DefinePlugin,[this.store.empConfig.define])}async copy(){let e=this.store.resolve("public");de.existsSync(e)&&de.readdirSync(e).length>0&&this.store.chain.plugin("copyRspackPlugin").use(E.CopyRspackPlugin,[{patterns:[{from:e,to:this.store.resolve("dist")}]}])}async progress(){this.store.empConfig.debug.progress&&this.store.chain.plugin("progressPlugin").use(E.ProgressPlugin,[{prefix:"EMP"}])}async empShare(){if(!this.store.empConfig.empShare.name)return;let{ModuleFederationPluginV1:e,ModuleFederationPlugin:t}=E.container,s=this.store.empConfig.empShare.mfVersion===1?e:t;this.store.chain.plugin("empShare").use(s,[{...this.store.empConfig.empShare}])}minJs(){this.store.mode==="production"&&this.store.chain.plugin("minJs").use(E.SwcJsMinimizerRspackPlugin,[this.store.empConfig.build.minOptions])}minCss(){this.store.mode==="production"&&this.store.chain.plugin("minJs").use(E.SwcJsMinimizerRspackPlugin,[{}])}},ye=new H});var N,ve,Ce=l(()=>{"use strict";N=class{store;async setup(e){this.store=e;let t=[this.react(),this.files(),this.scripts()];await Promise.all(t)}async scripts(){let{isDev:e}=this.store,t=this.store.reactVersion?{react:{runtime:this.store.empConfig.reactRuntime,development:e,refresh:e}}:{};this.store.chain.merge({module:{parser:{javascript:{exportsPresence:"error",importExportsPresence:"error"}},rule:{mjs:{test:/\.m?js/,resolve:{fullySpecified:!1}},typescript:{test:/\.(ts|tsx)$/,sideEffects:!1,use:[{loader:"builtin:swc-loader",options:{jsc:{parser:{syntax:"typescript",decorators:!0,tsx:!0,dynamicImport:!0},transform:t}}}]},javascript:{test:/\.(js|jsx)$/,exclude:this.store.empConfig.moduleTransformRule,sideEffects:!1,use:[{loader:"builtin:swc-loader",options:{jsc:{parser:{syntax:"ecmascript",jsx:!0,decorators:!0,decoratorsBeforeExport:!1},transform:t}}}]}}}})}async react(){if(this.store.reactVersion&&(this.store.empConfig.react.svgr&&this.store.chain.merge({module:{rule:{svg:{test:/\.svg$/,issuer:/\.[jt]sx?$/,resourceQuery:/svgr/,use:[{loader:this.store.importResolve("@svgr/webpack"),options:{}}]}}}}),this.store.isDev&&this.store.empConfig.react.hmr)){let{default:e}=await import("@rspack/plugin-react-refresh"),t={};this.store.empConfig.empShare.name&&(t.library=this.store.empConfig.empShare.name),this.store.chain.plugin("plugin-react-refresh").use(e,[t])}}async files(){(!this.store.reactVersion||!this.store.empConfig.react.svgr)&&this.store.chain.merge({module:{rule:{svg:{test:/\.svg$/,type:"asset/resource"}}}}),this.store.chain.merge({module:{rule:{inline:{resourceQuery:/inline/,type:"asset/inline"}}}}),this.store.chain.merge({module:{rule:{image:{test:/\.(png|jpe?g|gif|webp|ico)$/i,type:"asset/resource"},fonts:{test:/\.(|otf|ttf|eot|woff|woff2)$/i,type:"asset/resource"},svga:{test:/\.(svga)$/i,type:"asset/resource"}}}})}},ve=new N});var I,we,xe=l(()=>{"use strict";I=class{store;async setup(e){this.store=e;let t=[this.common(),this.stats(),this.devServer(),this.optimization()];await Promise.all(t)}async common(){this.store.merge({experiments:{rspackFuture:{}},infrastructureLogging:this.store.empConfig.debug.infrastructureLogging,context:this.store.root,mode:this.store.mode,cache:!0,devtool:this.store.empConfig.build.sourcemap?"source-map":!1,builtins:{css:{modules:{localIdentName:this.store.isDev?"[path][name]-[local]-[hash:5]":"[local]-[hash:5]"}}},output:this.store.empConfig.output,resolve:this.store.empConfig.resolve,externals:this.store.empConfig.externals})}async stats(){this.store.merge({stats:{colors:!0,all:!1,assets:!1,chunks:!1,timings:!0,version:!0}})}async devServer(){this.store.merge({devServer:this.store.empConfig.server})}async optimization(){this.store.chain.merge({optimization:{chunkIds:this.store.empConfig.build.chunkIds,minimize:this.store.empConfig.build.minify}})}},we=new I});import mt from"chalk";function Se(){process.stdout.write(process.platform==="win32"?"\x1B[2J\x1B[0f":"\x1B[2J\x1B[3J\x1B[H")}function d(r,...e){for(let t of e)for(let s in t){let i=t[s],o=r[s];if(Object(i)==i&&Object(o)===o){r[s]=d(o,i);continue}r[s]=t[s]}return r}var k,Ee,b=l(()=>{"use strict";k=(r="",e="")=>{let t=r.replace("^","").split("."),s=e.replace("^","").split("."),i=Math.max(t.length,s.length),o=0;for(let a=0;a<i;a++){let c=t.length>a?t[a]:0,h=isNaN(Number(c))?c.charCodeAt():Number(c),$=s.length>a?s[a]:0,m=isNaN(Number($))?$.charCodeAt():Number($);if(h<m){o=-1;break}else if(h>m){o=1;break}}return o},Ee=r=>{r=r/1e3;let e=s=>mt.bold(s);if(r<1)return`${r*1e3} ms`;if(r<10){let s=r>=.01?2:3;return`${e(r.toFixed(s))} s`}if(r<60)return`${e(r.toFixed(1))} s`;let t=r/60;return`${e(t.toFixed(2))} m`}});import ht from"html-webpack-plugin";import ft from"fast-glob";import x from"node:path";var _,Oe,$e=l(()=>{"use strict";b();_=class{store;entriesConfig={};async setup(e){this.store=e,await this.init(),this.toConfig()}setHtmlConfig(e,t){return e.template=this.setTemplate(e.template),e.favicon=this.setFavicion(e.favicon),e.chunks=t,e.filename=`${t[0]}.html`,this.store.empConfig.base&&(e.publicPath=this.store.empConfig.base),this.store.empConfig.empShareLib&&(e.files=d(e.files,this.store.empConfig.empShareLib.externalAssets)),e}setChunk(e){return e.replace(x.extname(e),"").replace(`${this.store.empConfig.appSrc}${x.sep}`,"")}setTemplate(e){return e?this.store.resolve(e):this.store.empResolve(x.join("template","index.html"))}setFavicion(e){return e?this.store.resolve(e):this.store.empResolve(x.join("template","favicon.ico"))}setEntryItem(e,t,s){s=s||this.store.resolve(x.join(this.store.empConfig.appSrc,e));let i=this.setChunk(e);this.entriesConfig[i]={entry:{[i]:s},html:this.setHtmlConfig(t,[i])}}setRspackHtmlPlugin(e,t){this.store.chain.plugin(`html-plugin-${t}`).use(ht,[e])}setRspackEntry(e){this.store.merge({entry:e})}async init(){let e=x.join(this.store.appSrc,this.store.empConfig.appEntry?this.store.empConfig.appEntry:"index.{ts,tsx,jsx,js}").replace(/\\/g,"/"),t=await ft([e]);if(t[0]){let s=x.join(this.store.empConfig.appSrc,Object.keys(this.store.empConfig.entries).length>0&&this.store.empConfig.appEntry?this.store.empConfig.appEntry:"index");this.setEntryItem(s,this.store.empConfig.html,t[0])}if(Object.keys(this.store.empConfig.entries).length>0)for(let[s,i]of Object.entries(this.store.empConfig.entries))this.setEntryItem(s,{...this.store.empConfig.html,...i})}toConfig(){for(let[e,t]of Object.entries(this.entriesConfig))this.setRspackHtmlPlugin(t.html,e),this.setRspackEntry(t.entry)}},Oe=new _});var J,Pe,Re=l(()=>{"use strict";J=class{store;async setup(e){this.store=e;let t=[this.sass(),this.less(),this.css()];await Promise.all(t)}async sass(){let e={loader:this.store.importResolve("sass-loader"),options:{}};this.store.chain.merge({module:{rule:{sass:{test:/\.(sass|scss)$/,use:[this.postcss,e],type:"css/auto"}}}})}async less(){let e={loader:this.store.importResolve("less-loader"),options:{lessOptions:{javascriptEnabled:!0}}};this.store.chain.merge({module:{rule:{less:{test:/\.less$/,use:[this.postcss,e],type:"css/auto"}}}})}async css(){this.store.chain.merge({module:{rule:{css:{test:/\.css$/,use:[this.postcss],type:"css/auto"}}}})}get postcss(){return{loader:this.store.importResolve("postcss-loader"),options:{postcssOptions:{plugins:this.store.empConfig.css.postcss}}}}},Pe=new J});var V,ke,je=l(()=>{"use strict";be();Ce();xe();$e();Re();V=class{store;async setup(e){this.store=e;let t=[we.setup(this.store),ve.setup(this.store),ye.setup(this.store),Oe.setup(this.store),Pe.setup(this.store)];await Promise.all(t),await this.store.empConfig.plugins(),await this.store.empConfig.chain()}},ke=new V});import f from"chalk";import{table as ut}from"table";var W,p,y=l(()=>{"use strict";W=class{pname="";logLevel="debug";setup({pname:e,logLevel:t}){this.pname=e,t&&(this.logLevel=t)}debug=(...e)=>["debug"].includes(this.logLevel)&&console.log(...e);info=(...e)=>["debug","info"].includes(this.logLevel)&&console.log(...e);warn=(...e)=>["debug","info","warn"].includes(this.logLevel)&&console.warn(...e);error=(...e)=>["debug","info","warn","error"].includes(this.logLevel)&&console.error(...e);blue=e=>{console.log(`${f.white.bgBlue(this.pname)}${f.blue.bgWhite(` ${e} `)}
|
|
2
|
-
`)};cyan=
|
|
3
|
-
`)};magenta=
|
|
4
|
-
`)};green=
|
|
5
|
-
`)};yellow=
|
|
6
|
-
`)};red=
|
|
7
|
-
`)};sysError=
|
|
8
|
-
`)};link=
|
|
9
|
-
`)};tableData=[];tableConfig={border:{topBody:"\u2500",topJoin:"\u252C",topLeft:"\u250C",topRight:"\u2510",bottomBody:"\u2500",bottomJoin:"\u2534",bottomLeft:"\u2514",bottomRight:"\u2518",bodyLeft:"\u2502",bodyRight:"\u2502",bodyJoin:"\u2502",joinBody:"\u2500",joinLeft:"\u251C",joinRight:"\u2524",joinJoin:"\u253C"}};tableInput(e){this.tableData.push(e)}tableOutput(){console.log(ut(this.tableData,this.tableConfig))}},p=new W});var j,De=l(()=>{"use strict";j=class{externals={};externalAssets={js:[],css:[]};exp=/^([0-9a-zA-Z_\s]+)@(.*)/;async setup(e){this.setShareLib(e),delete e.shareLib}async setShareLib(e){let t=[];if(typeof e.shareLib=="object")for(let[s,i]of Object.entries(e.shareLib)){let o={};if(o.module=s,typeof i=="string"){let a=i.match(this.exp)||[];a.length>0?(o.global=a[1],o.entry=a[2],o.type="js",t.push(o),o={}):(o.global="",o.entry=i,o.type="js",t.push(o),o={})}else Array.isArray(i)?i.map(a=>{if(!a)return;if(a.split("?")[0].endsWith(".css"))o.entry=a,o.type="css";else{let h=a.match(this.exp)||[];h.length>0?(o.global=h[1],o.entry=h[2],o.type="js"):(o.global="",o.entry=a,o.type="js")}t.push(o),o={}}):typeof i=="object"&&i.entry&&(o.entry=i.entry,o.global=i.global,o.type=i.type,t.push(o),o={})}await Promise.all([this.setExternalAssets(t)])}async setExternalAssets(e=[]){if(e.length>0){let t=[];t=t.concat(e),t.map(s=>{s.type=s.type||"js",s.type==="js"&&s.module?(s.global&&(this.externals[s.module]=s.global),s.entry&&this.externalAssets.js.push(s.entry)):s.type==="css"&&s.entry&&this.externalAssets.css.push(s.entry)})}}}});import Fe from"url";import Te from"chalk";import{ip as gt}from"address";import{gateway4sync as dt}from"default-gateway";var X,O,q=l(()=>{"use strict";X=class{imf={protocol:"",port:8e3,pathname:"/"};host="0.0.0.0";urls={lanUrlForConfig:"",lanUrlForTerminal:Te.gray("unavailable"),localUrlForTerminal:"",localUrlForBrowser:""};setup(e){e.host&&(this.host=e.host),e.protocol&&(this.imf.protocol=e.protocol),e.pathname&&(this.imf.pathname=e.pathname),e.port&&(this.imf.port=e.port),this.setupUrls()}setupUrls(){let{host:e}=this,t=e==="0.0.0.0"||e==="::",s;if(t){s="localhost";try{this.urls.lanUrlForConfig=this.getLanIp(),this.urls.lanUrlForConfig&&(/^10[.]|^172[.](1[6-9]|2[0-9]|3[0-1])[.]|^192[.]168[.]/.test(this.urls.lanUrlForConfig)?this.urls.lanUrlForTerminal=this.prettyPrintUrl(this.urls.lanUrlForConfig):this.urls.lanUrlForConfig="")}catch{}}else s=e,this.urls.lanUrlForConfig=e,this.urls.lanUrlForTerminal=this.prettyPrintUrl(this.urls.lanUrlForConfig);this.urls.localUrlForTerminal=this.prettyPrintUrl(s),this.urls.localUrlForBrowser=this.formatUrl(s)}getLanIp(){let{int:e}=dt();return gt(e||"")||"127.0.0.1"}formatUrl(e){let{protocol:t,port:s,pathname:i}=this.imf;return Fe.format({protocol:t,hostname:e,port:s,pathname:i})}prettyPrintUrl(e){let{protocol:t,port:s,pathname:i}=this.imf;return Fe.format({protocol:t,hostname:e,port:Te.bold(s),pathname:i})}},O=new X});var Q,D,Y=l(()=>{"use strict";q();b();g();Q=class{isADB=!1;isHttps=!1;get isHttpBase(){let e=n.empOptions.base||"";return e.indexOf("http://")>-1||e.indexOf("https://")>-1}setup(){if(this.isADB=!!n.empOptions.autoDevBase&&n.mode==="development"&&!this.isHttpBase,!this.isADB)return;let{server:e,https:t}=n.empOptions.server||{};this.isHttps=e==="https"||typeof e=="object"&&e.type==="https"||t===!0;let s=O.getLanIp(),i=this.isHttps?"https":"http",o=n.empOptions.server?.port||8e3;n.empOptions.base=`${i}://${s}:${o}/`,n.empOptions.server=d({port:o,client:{webSocketURL:`${this.isHttps?"wss":"ws"}://${s}:${o}/ws`}},n.empOptions.server)}},D=new Q});var Z,Le,Ae=l(()=>{"use strict";Y();Z=class{async afterGetEmpOptions(){D.setup()}},Le=new Z});import yt from"node:fs";var K,Be,Ue=l(()=>{"use strict";b();De();Ae();K=class{store;appSrc="src";appEntry="";base="";assign(e,t){return t=t||{},d(e,t)}empShareLib=new j;async autoDevSet(){this.store.mode==="development"&&this.store.empOptions.autoDevBase}async setup(e){this.store=e,await this.syncEmpOptions(),await Le.afterGetEmpOptions();let{appSrc:t,base:s,appEntry:i}=this.store.empOptions;t&&(this.appSrc=t),s&&(this.base=s),i&&(this.appEntry=i),this.store.empOptions.empShare?.shareLib&&await this.empShareLib.setup(this.store.empOptions.empShare)}async chain(){this.store.empOptions.chain&&await this.store.empOptions.chain(this.store.chain)}async plugins(){let e=[];this.store.empOptions.plugins&&Array.isArray(this.store.empOptions.plugins)&&this.store.empOptions.plugins.length>0&&(this.store.empOptions.plugins.map(t=>{e.push(t.rsConfig(this.store))}),await Promise.all(e))}get debug(){return this.assign({loggerLevel:"info",clearLog:!0,progress:!0,showRsconfig:!1,infrastructureLogging:{appendOnly:!0,level:"warn"}},this.store.empOptions.debug)}get build(){let e=this.store.empOptions.build?.staticDir?`${this.store.empOptions.build?.staticDir}/`:"";return this.assign({outDir:"dist",staticDir:e,assetsDir:"assets",publicDir:"public",chunkIds:this.store.isDev?"named":"deterministic",sourcemap:!0,minify:!this.store.isDev,minOptions:{}},{...this.store.empOptions.build,staticDir:e})}get html(){return this.assign({lang:"zh-CN",title:"EMP",inject:"body",minify:!this.store.isDev,meta:{charset:{charset:"utf-8"},"http-equiv":{"http-equiv":"X-UA-Compatible",content:"IE=edge"},viewport:{content:"width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"}},files:{css:[],js:[]},tags:{headTags:[],bodyTags:[]}},this.store.empOptions.html)}get entries(){return this.store.empOptions.entries?this.store.empOptions.entries:{}}get react(){return this.assign({hmr:!0,svgr:!1},this.store.empOptions.react)}get server(){let e={host:"0.0.0.0",port:8e3,open:process.platform==="darwin",hot:!0,watchFiles:["src/**/*.html"],static:[{directory:this.store.publicDir,watch:this.store.isDev}],allowedHosts:["all"],historyApiFallback:!0,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, PUT, DELETE, PATCH, OPTIONS","Access-Control-Allow-Headers":"X-Requested-With, content-type, Authorization"}};return this.assign(e,this.store.empOptions.server)}get empShare(){return this.assign({name:"",filename:"emp.js",shared:{},mfVersion:1},this.store.empOptions.empShare)}get css(){return this.assign({postcss:[]},this.store.empOptions.css)}get output(){let e=(this.store.isDev,".[contenthash:8]"),t=this.store.isDev?"":".[contenthash:8]",{assetsDir:s,staticDir:i}=this.store.empConfig.build;return this.assign({publicPath:this.store.empConfig.base?this.store.empConfig.base:"auto",crossOriginLoading:"anonymous",filename:`${i}js/[name]${e}.js`,cssFilename:`${i}css/[name]${t}.css`,cssChunkFilename:`${i}css/[name]${t}.css`,assetModuleFilename:`${i}${s}/[name]${e}[ext][query]`,path:this.store.outDir,clean:!0},this.store.empOptions.output)}get define(){let e={mode:this.store.mode,env:this.store.cliOptions.env};return this.store.empOptions.define&&(e={...e,...this.store.empOptions.define}),this.setDefine(e)}setDefine(e){let t=this.store.empOptions.defineFix?this.store.empOptions.defineFix:"cjs",s={};return Object.keys(e).map(i=>{(t==="all"||t==="esm")&&(s[`import.meta.env.${i}`]=JSON.stringify(e[i])),(t==="all"||t==="cjs")&&(s[`process.env.${i}`]=JSON.stringify(e[i])),s[`${i}`]=JSON.stringify(e[i])}),s}get externals(){return this.assign(this.empShareLib.externals,this.store.empOptions.externals)}get resolve(){return d({alias:{src:this.store.resolve("src"),"@":this.store.resolve("src")},extensions:["...",".js",".jsx",".mjs",".ts",".tsx",".css",".less",".scss",".sass",".json",".wasm",".vue",".svg",".svga"]},this.store.empOptions.resolve)}async syncEmpOptions(){let e=this.store.resolve("emp-config.js");if(!yt.existsSync(e))return;let{default:t}=await import(this.store.importFileUrl(e));typeof t=="function"?this.store.empOptions=await t(this.store):this.store.empOptions=t||{}}get moduleTransformRule(){let{moduleTransform:e}=this.store.empOptions,t=this.assign({defaultExclude:!1},e),s={and:[],not:[]};return t.defaultExclude===!0&&s.and.push(/(node_modules|bower_components)/),t?.exclude&&(s.and=s.and.concat(t.exclude)),e?.include&&(s.not=t.include),s}get cacheDir(){return this.store.empOptions.cacheDir?this.store.empOptions.cacheDir:"node_modules/.emp-cache"}get lifeCycle(){return this.assign({},this.store.empOptions.lifeCycle)}get reactRuntime(){if(this.store.reactVersion)return this.store.empOptions.reactRuntime?this.store.empOptions.reactRuntime:k(this.store.reactVersion,"17")>-1?"automatic":"classic"}},Be=new K});import v from"node:path";import bt from"node:fs/promises";import vt from"webpack-chain";import{pathToFileURL as Ct}from"node:url";var ee,n,g=l(()=>{"use strict";ge();je();y();Ue();ee=class{empPkg={dependencies:{},devDependencies:{},version:"2.0.0",name:""};pkg={dependencies:{},devDependencies:{},version:"0.0.0",name:""};root=process.cwd();empRoot=ue;empSource=v.resolve(this.empRoot,"dist");resolve=e=>v.isAbsolute(e)?e:v.resolve(this.root,e);empResolve=e=>v.resolve(this.empRoot,e);appSrc="";outDir="";publicDir="";resource={dir:"",key:"",cert:""};cacheDir="";mode="development";cliMode="dev";isDev=!0;reactVersion=void 0;cliOptions;chain;rsConfig;empOptions={};empConfig;async setup(e,t){await this.initVars(e,t),this.empConfig=Be,await this.empConfig.setup(this),this.initPaths(),this.chain=new vt,await ke.setup(this),this.setLogger(),this.toConfig(),this.logConfig()}async initVars(e,t){this.cliOptions=t||{},this.cliMode="prod",this.mode=e==="dev"?"development":"production",this.isDev=this.mode==="development";let s=await M(this.empResolve("package.json")),i=await M(this.resolve("package.json"));this.empPkg={...this.empPkg,...s},this.pkg={...this.pkg,...i},this.reactVersion=this.pkg.dependencies.react||this.pkg.devDependencies.react}initPaths(){this.appSrc=this.resolve(this.empConfig.appSrc),this.outDir=this.resolve(this.empConfig.build.outDir),this.publicDir=this.resolve(this.empConfig.build.publicDir),this.cacheDir=this.resolve(this.empConfig.cacheDir),this.resource.dir=v.join(this.empRoot,"resource"),this.resource.cert=v.join(this.resource.dir,"emp.cert"),this.resource.key=v.join(this.resource.dir,"emp.key")}setLogger(){let e=this.cliMode==="dev"?"debug":"info";this.empConfig.debug.loggerLevel&&(e=this.empConfig.debug.loggerLevel),p.setup({pname:`EMP\u26A1${this.empPkg.version}${this.cliMode==="dev"?".DEV":""}`,logLevel:e})}merge(e){this.chain.merge(e)}importResolve(e,t){return fe(e,t)}importFileUrl(e){return Ct(e).toString()}toConfig(){this.rsConfig=this.chain.toConfig()}logConfig(){if(this.empConfig.debug.showRsconfig)if(typeof this.empConfig.debug.showRsconfig=="string"){let e=v.join(this.root,this.empConfig.debug.showRsconfig);bt.writeFile(e,JSON.stringify(this.rsConfig,null,2))}else console.log("[ChainConfig]",JSON.stringify(this.rsConfig,null,2))}},n=new ee});import{exec as wt}from"node:child_process";import{promisify as xt}from"node:util";var Ge,ze,St,Et,Me,He=l(()=>{"use strict";y();g();Ge=xt(wt),ze=["Google Chrome Canary","Google Chrome Dev","Google Chrome Beta","Google Chrome","Microsoft Edge","Brave Browser","Vivaldi","Chromium"],St=async()=>{let r=process.env.BROWSER;if(!r||!ze.includes(r)){let{stdout:e}=await Ge("ps cax");r=ze.find(t=>e.includes(t))}return r},Et=async r=>{if(process.platform==="darwin")try{let t=await St();if(t){let s=`osascript openChrome.applescript "${encodeURI(r)}" "${t}"`;return await Ge(s,{cwd:n.resource.dir}),!0}}catch(t){p.debug(t)}try{let{default:t}=await import("open");return await t(r),!0}catch(t){return p.error("Failed to open start URL."),p.error(t),!1}},Me=Et});import Ot from"net";import $t from"os";async function Ie(r,e="localhost"){if(r!==Pt&&(r<Ne||r>te))throw new Error(`Port number must lie between ${Ne} and ${te}`);let t=r,s=Rt(),i;e&&!s.has(e)?i=new Set([e]):i=s;let o=new Set(["EADDRINUSE","EACCES"]);for(;t<=te;)try{return await jt(t,i)}catch(a){if(!o.has(a.code))throw a;t+=1}throw new Error("No available ports found")}var Ne,te,Pt,Rt,kt,jt,_e=l(()=>{"use strict";Ne=1024,te=65535,Pt=443,Rt=()=>{let r=$t.networkInterfaces(),e=new Set([void 0,"0.0.0.0"]);for(let t of Object.values(r))if(t)for(let s of t)e.add(s.address);return e},kt=(r,e)=>new Promise((t,s)=>{let i=Ot.createServer();i.unref(),i.on("error",s),i.listen(r,e,()=>{let{port:o}=i.address();i.close(()=>{t(o)})})}),jt=async(r,e)=>{let t=new Set(["EADDRNOTAVAIL","EINVAL"]);for(let s of e)try{await kt(r,s)}catch(i){if(!t.has(i.code))throw i}return r}});import Je from"node:fs/promises";import F from"chalk";var C,T=l(()=>{"use strict";y();g();b();q();He();_e();Y();C=class{sf={protocol:"http",host:"0.0.0.0",port:8e3,publicPath:"",publicHasHttp:!1,isOpenBrower:!1,url:"",urls:{localUrlForBrowser:"",localUrlForTerminal:"",lanUrlForTerminal:"",lanUrlForConfig:""}};async adaptServer(){this.sf.publicPath=n.rsConfig.output?.publicPath==="auto"?"/":n.rsConfig.output?.publicPath||"/",this.sf.isOpenBrower=!!n.empConfig.server.open,this.sf.protocol=this.isHttps?"https":"http",this.sf.host=n.empConfig.server.host?n.empConfig.server.host:this.sf.host,this.sf.port=n.empConfig.server.port,await this.serverPort(),O.setup(this.sf),this.sf.publicPath&&(this.sf.publicPath.indexOf("http://")>-1||this.sf.publicPath.indexOf("https://")>-1)?(this.sf.url=this.sf.publicPath,this.sf.publicHasHttp=!0,this.sf.urls.localUrlForTerminal=O.prettyPrintUrl("localhost")):(this.sf.urls=O.urls,this.sf.url=this.sf.urls.localUrlForBrowser)}startOpen(){let{urls:e}=this.sf;this.sf.publicHasHttp?(p.info(`${F.greenBright("\u279C")} Local: ${p.link(e.localUrlForTerminal)}`),p.info(`${F.greenBright("\u279C")} Network: ${p.link(this.sf.publicPath)}`)):(p.info(`${F.greenBright("\u279C")} Local: ${p.link(e.localUrlForTerminal)}`),p.info(`${F.greenBright("\u279C")} Network: ${p.link(e.lanUrlForTerminal)}
|
|
10
|
-
`)),this.sf.isOpenBrower&&
|
|
1
|
+
var pe=Object.defineProperty;var l=(r,t)=>()=>(r&&(t=r(r=0)),t);var B=(r,t)=>{for(var e in t)pe(r,e,{get:t[e],enumerable:!0})};import{fileURLToPath as ae}from"node:url";import{dirname as le}from"node:path";import{readFile as ce}from"node:fs/promises";import ht from"node:module";import G from"node:path";var ft,me,U,he,ut,gt,dt=l(()=>{"use strict";ft=ae(import.meta.url),me=le(ft),U=async r=>{try{let t=await ce(r);return JSON.parse(t)}catch(t){console.error(t)}},he=ht.createRequire(import.meta.url),ut=(r,t)=>{let e=he;return t&&(e=ht.createRequire(t)),e.resolve(r)},gt=G.resolve(me,ft).replace(`${G.sep}dist${G.sep}index.js`,"")});import E from"@rspack/core";import yt from"fs";var I,bt,vt=l(()=>{"use strict";I=class{store;async setup(t){this.store=t;let e=[this.define(),this.anylayze(),this.progress(),this.copy(),this.empShare(),this.minify()];await Promise.all(e)}async anylayze(){if(!this.store.cliOptions.analyze)return;let{default:{BundleAnalyzerPlugin:t}}=await import("webpack-bundle-analyzer");this.store.chain.plugin("bundleAnalyzerPlugin").use(t,[{}])}async define(){this.store.chain.plugin("definePlugin").use(E.DefinePlugin,[this.store.empConfig.define])}async copy(){let t=this.store.resolve("public");yt.existsSync(t)&&yt.readdirSync(t).length>0&&this.store.chain.plugin("copyRspackPlugin").use(E.CopyRspackPlugin,[{patterns:[{from:t,to:this.store.resolve("dist")}]}])}async progress(){this.store.empConfig.debug.progress&&this.store.chain.plugin("progressPlugin").use(E.ProgressPlugin,[{prefix:"EMP"}])}async empShare(){let{config:t,version:e}=this.store.empConfig.empShareLib;if(!t.name)return;let{ModuleFederationPluginV1:i,ModuleFederationPlugin:o}=E.container,p=e===1?i:o;this.store.chain.plugin("empShare").use(p,[this.store.empConfig.empShareLib.pluginConfig])}minify(){this.store.chain.optimization.minimize(this.store.mode==="production"),this.store.chain.optimization.minimizer("minJs").use(E.SwcJsMinimizerRspackPlugin,[this.store.empConfig.build.minOptions]),this.store.chain.optimization.minimizer("minCss").use(E.SwcCssMinimizerRspackPlugin,[{}])}},bt=new I});var H,Ct,wt=l(()=>{"use strict";H=class{store;async setup(t){this.store=t;let e=[this.react(),this.files(),this.scripts()];await Promise.all(e)}async scripts(){let{isDev:t}=this.store,e=this.store.reactVersion?{react:{runtime:this.store.empConfig.reactRuntime,development:t,refresh:t}}:{};this.store.chain.merge({module:{parser:{javascript:{exportsPresence:"error",importExportsPresence:"error"}},rule:{mjs:{test:/\.m?js/,resolve:{fullySpecified:!1}},typescript:{test:/\.(ts|tsx)$/,sideEffects:!1,use:[{loader:"builtin:swc-loader",options:{jsc:{target:this.store.empConfig.build.target,parser:{syntax:"typescript",decorators:!0,tsx:!0,dynamicImport:!0},transform:e}}}]},javascript:{test:/\.(js|jsx)$/,sideEffects:!1,use:[{loader:"builtin:swc-loader",options:{jsc:{target:this.store.empConfig.build.target,parser:{syntax:"ecmascript",jsx:!0,decorators:!0,decoratorsBeforeExport:!1},transform:e}}}]}}}})}async react(){if(this.store.reactVersion&&(this.store.empConfig.react.svgr&&this.store.chain.merge({module:{rule:{svg:{test:/\.svg$/,issuer:/\.[jt]sx?$/,resourceQuery:/svgr/,use:[{loader:this.store.importResolve("@svgr/webpack"),options:{}}]}}}}),this.store.isDev&&this.store.empConfig.react.hmr)){let{default:t}=await import("@rspack/plugin-react-refresh"),e={};this.store.empConfig.empShareLib.config.name&&(e.library=this.store.empConfig.empShareLib.config.name),this.store.chain.plugin("plugin-react-refresh").use(t,[e])}}async files(){(!this.store.reactVersion||!this.store.empConfig.react.svgr)&&this.store.chain.merge({module:{rule:{svg:{test:/\.svg$/,type:"asset/resource"}}}}),this.store.chain.merge({module:{rule:{inline:{resourceQuery:/inline/,type:"asset/inline"}}}}),this.store.chain.merge({module:{rule:{image:{test:/\.(png|jpe?g|gif|webp|ico)$/i,type:"asset/resource"},fonts:{test:/\.(|otf|ttf|eot|woff|woff2)$/i,type:"asset/resource"},svga:{test:/\.(svga)$/i,type:"asset/resource"}}}})}},Ct=new H});var N,xt,St=l(()=>{"use strict";N=class{store;async setup(t){this.store=t;let e=[this.common(),this.stats(),this.devServer(),this.optimization()];await Promise.all(e)}async common(){this.store.merge({experiments:{rspackFuture:{newTreeshaking:!0},outputModule:this.store.empConfig.isESM,topLevelAwait:!0},target:this.store.empConfig.target,infrastructureLogging:this.store.empConfig.debug.infrastructureLogging,context:this.store.root,mode:this.store.mode,cache:!0,devtool:this.store.empConfig.build.sourcemap?"source-map":!1,builtins:{css:{modules:{localIdentName:this.store.isDev?"[path][name]-[local]-[hash:5]":"[local]-[hash:5]"}}},output:this.store.empConfig.output,resolve:this.store.empConfig.resolve,externals:this.store.empConfig.externals})}async stats(){this.store.merge({stats:{colors:!0,all:!1,assets:!1,chunks:!1,timings:!0,version:!0}})}async devServer(){this.store.merge({devServer:this.store.empConfig.server})}async optimization(){this.store.chain.merge({optimization:{chunkIds:this.store.empConfig.build.chunkIds,minimize:this.store.empConfig.build.minify}})}},xt=new N});import fe from"chalk";function Et(){process.stdout.write(process.platform==="win32"?"\x1B[2J\x1B[0f":"\x1B[2J\x1B[3J\x1B[H")}function g(r,...t){for(let e of t)for(let s in e){let i=e[s],o=r[s];if(Object(i)==i&&Object(o)===o){r[s]=g(o,i);continue}r[s]=e[s]}return r}var R,Ot,y=l(()=>{"use strict";R=(r="",t="")=>{let e=r.replace("^","").split("."),s=t.replace("^","").split("."),i=Math.max(e.length,s.length),o=0;for(let p=0;p<i;p++){let c=e.length>p?e[p]:0,h=isNaN(Number(c))?c.charCodeAt():Number(c),$=s.length>p?s[p]:0,m=isNaN(Number($))?$.charCodeAt():Number($);if(h<m){o=-1;break}else if(h>m){o=1;break}}return o},Ot=r=>{r=r/1e3;let t=s=>fe.bold(s);if(r<1)return`${r*1e3} ms`;if(r<10){let s=r>=.01?2:3;return`${t(r.toFixed(s))} s`}if(r<60)return`${t(r.toFixed(1))} s`;let e=r/60;return`${t(e.toFixed(2))} m`}});import $t from"html-webpack-plugin";import ue from"fast-glob";import x from"node:path";var _,V,Pt,kt=l(()=>{"use strict";y();_=class{importMap;constructor(t){this.importMap=t}apply(t){t.hooks.compilation.tap("HtmlImportMapPlugin",e=>{$t.getHooks(e).alterAssetTagGroups.tapAsync("HtmlImportMapPlugin",(s,i)=>{s.headTags.push({tagName:"script",attributes:{type:"importmap"},innerHTML:`${JSON.stringify(this.importMap,null,2)}`,voidTag:!1,meta:{plugin:void 0}}),i(null,s)})})}},V=class{store;entriesConfig={};async setup(t){this.store=t,await this.init(),this.toConfig()}setHtmlConfig(t,e){return t.template=this.setTemplate(t.template),t.favicon=this.setFavicion(t.favicon),t.chunks=e,t.filename=`${e[0]}.html`,this.store.empConfig.base&&(t.publicPath=this.store.empConfig.base),this.store.empConfig.empShareLib&&(t.files=g(t.files,this.store.empConfig.empShareLib.externalAssets)),t.tags=t.tags||{},t}setChunk(t){return t.replace(x.extname(t),"").replace(`${this.store.empConfig.appSrc}${x.sep}`,"")}setTemplate(t){return t?this.store.resolve(t):this.store.empResolve(x.join("template","index.html"))}setFavicion(t){return t?this.store.resolve(t):this.store.empResolve(x.join("template","favicon.ico"))}setEntryItem(t,e,s){s=s||this.store.resolve(x.join(this.store.empConfig.appSrc,t));let i=this.setChunk(t);this.entriesConfig[i]={entry:{[i]:s},html:this.setHtmlConfig(e,[i])}}setRspackHtmlPlugin(t,e){this.store.chain.plugin(`html-plugin-${e}`).use($t,[t]),this.store.empConfig.empShareLib.useImportMap&&this.store.chain.plugin(`html-plugin-import-map-${e}`).use(_,[this.store.empConfig.empShareLib.importMap])}setRspackEntry(t){this.store.merge({entry:t})}async init(){let t=x.join(this.store.appSrc,this.store.empConfig.appEntry?this.store.empConfig.appEntry:"index.{ts,tsx,jsx,js}").replace(/\\/g,"/"),e=await ue([t]);if(e[0]){let s=x.join(this.store.empConfig.appSrc,Object.keys(this.store.empConfig.entries).length>0&&this.store.empConfig.appEntry?this.store.empConfig.appEntry:"index");this.setEntryItem(s,this.store.empConfig.html,e[0])}if(Object.keys(this.store.empConfig.entries).length>0)for(let[s,i]of Object.entries(this.store.empConfig.entries))this.setEntryItem(s,{...this.store.empConfig.html,...i})}toConfig(){for(let[t,e]of Object.entries(this.entriesConfig))this.setRspackHtmlPlugin(e.html,t),this.setRspackEntry(e.entry)}},Pt=new V});var J,Rt,Lt=l(()=>{"use strict";J=class{store;async setup(t){this.store=t;let e=[this.sass(),this.less(),this.css()];await Promise.all(e)}async sass(){let t={loader:this.store.importResolve("sass-loader"),options:{}};this.store.chain.merge({module:{rule:{sass:{test:/\.(sass|scss)$/,use:{postcss:this.postcss,sassLoader:t},type:"css/auto"}}}})}async less(){let t={loader:this.store.importResolve("less-loader"),options:{lessOptions:{javascriptEnabled:!0}}};this.store.chain.merge({module:{rule:{less:{test:/\.less$/,use:{postcss:this.postcss,lessLoader:t},type:"css/auto"}}}})}async css(){this.store.chain.merge({module:{rule:{css:{test:/\.css$/,use:{postcss:this.postcss},type:"css/auto"}}}})}get postcss(){return{loader:this.store.importResolve("postcss-loader"),options:{postcssOptions:{plugins:this.store.empConfig.css.postcss}}}}},Rt=new J});var W,jt,Tt=l(()=>{"use strict";vt();wt();St();kt();Lt();W=class{store;async setup(t){this.store=t;let e=[xt.setup(this.store),Ct.setup(this.store),bt.setup(this.store),Pt.setup(this.store),Rt.setup(this.store)];await Promise.all(e),await this.store.empConfig.plugins(),await this.store.empConfig.chain()}},jt=new W});import f from"chalk";import{table as ge}from"table";var X,a,b=l(()=>{"use strict";X=class{pname="";logLevel="debug";setup({pname:t,logLevel:e}){this.pname=t,e&&(this.logLevel=e)}debug=(...t)=>["debug"].includes(this.logLevel)&&console.log(...t);info=(...t)=>["debug","info"].includes(this.logLevel)&&console.log(...t);warn=(...t)=>["debug","info","warn"].includes(this.logLevel)&&console.warn(...t);error=(...t)=>["debug","info","warn","error"].includes(this.logLevel)&&console.error(...t);blue=t=>{console.log(`${f.white.bgBlue(this.pname)}${f.blue.bgWhite(` ${t} `)}
|
|
2
|
+
`)};cyan=t=>{console.log(`${f.white.bgCyan(this.pname)}${f.cyan.bgWhite(` ${t} `)}
|
|
3
|
+
`)};magenta=t=>{console.log(`${f.white.bgMagenta(this.pname)}${f.magenta.bgWhite(` ${t} `)}
|
|
4
|
+
`)};green=t=>{console.log(`${f.white.bgGreen(this.pname)}${f.green.bgWhite(` ${t} `)}
|
|
5
|
+
`)};yellow=t=>{console.log(`${f.white.bgYellow(this.pname)}${f.yellow.bgWhite(` ${t} `)}
|
|
6
|
+
`)};red=t=>{console.log(`${f.white.bgRed(this.pname)}${f.red.bgWhite(` ${t} `)}
|
|
7
|
+
`)};sysError=t=>{console.log(`${f.white.bgRed(" System Error Tips ")}${f.red.bgWhite(` ${t} `)}
|
|
8
|
+
`)};link=t=>f.hex("#3498db")(t);title=t=>{console.log(`${f.greenBright.bold(`${this.pname}`)} ${f.bgGreenBright(` ${t} `)}
|
|
9
|
+
`)};tableData=[];tableConfig={border:{topBody:"\u2500",topJoin:"\u252C",topLeft:"\u250C",topRight:"\u2510",bottomBody:"\u2500",bottomJoin:"\u2534",bottomLeft:"\u2514",bottomRight:"\u2518",bodyLeft:"\u2502",bodyRight:"\u2502",bodyJoin:"\u2502",joinBody:"\u2500",joinLeft:"\u251C",joinRight:"\u2524",joinJoin:"\u253C"}};tableInput(t){this.tableData.push(t)}tableOutput(){console.log(ge(this.tableData,this.tableConfig))}},a=new X});var L,Dt=l(()=>{"use strict";d();L=class{externals={};externalAssets={js:[],css:[]};exp=/^([0-9a-zA-Z_\s]+)@(.*)/;config;importMap={imports:{}};version;async setup(){this.config=n.empConfig.empShare,this.version=n.empConfig.empShare.mfVersion,this.config.shareLib&&this.setShareLib(),this.prepareEsm()}get useImportMap(){return this.config.useImportMap&&n.empConfig.isESM}get pluginConfig(){let t={...this.config};return delete t.mfVersion,delete t.shareLib,delete t.useImportMap,t}prepareEsm(){if(n.empConfig.isESM){this.config.library={type:"module"};let t=this.config.remotes||{};for(let[e,s]of Object.entries(t))if(typeof s=="string"){let i=s.match(this.exp)||[];i.length>0&&(t[e]=i[2])}this.config.remotes=t}}async setShareLib(){let t=this.config,e=[];if(typeof t.shareLib=="object")for(let[s,i]of Object.entries(t.shareLib)){let o={};if(o.module=s,typeof i=="string"){let p=i.match(this.exp)||[];p.length>0?(o.global=p[1],o.entry=p[2],o.type="js",e.push(o),o={}):(o.global="",o.entry=i,o.type="js",e.push(o),o={})}else Array.isArray(i)?i.map(p=>{if(!p)return;if(p.split("?")[0].endsWith(".css"))o.entry=p,o.type="css";else{let h=p.match(this.exp)||[];h.length>0?(o.global=h[1],o.entry=h[2],o.type="js"):(o.global="",o.entry=p,o.type="js")}e.push(o),o={}}):typeof i=="object"&&i.entry&&(o.entry=i.entry,o.global=i.global,o.type=i.type,e.push(o),o={})}await Promise.all([this.setExternalAssets(e)])}async setExternalAssets(t=[]){if(t.length>0){let e=[];e=e.concat(t),e.map(s=>{s.type=s.type||"js",s.type==="js"&&s.module?(s.global?this.externals[s.module]=s.global:n.empConfig.isESM&&(this.useImportMap?(this.externals[s.module]=s.module,this.importMap.imports[s.module]=s.entry):this.externals[s.module]=s.entry),s.entry&&!n.empConfig.isESM&&this.externalAssets.js.push(s.entry)):s.type==="css"&&s.entry&&this.externalAssets.css.push(s.entry)})}}}});import Ft from"url";import Mt from"chalk";import{ip as de}from"address";import{gateway4sync as ye}from"default-gateway";var q,O,Q=l(()=>{"use strict";q=class{imf={protocol:"",port:8e3,pathname:"/"};host="0.0.0.0";urls={lanUrlForConfig:"",lanUrlForTerminal:Mt.gray("unavailable"),localUrlForTerminal:"",localUrlForBrowser:""};setup(t){t.host&&(this.host=t.host),t.protocol&&(this.imf.protocol=t.protocol),t.pathname&&(this.imf.pathname=t.pathname),t.port&&(this.imf.port=t.port),this.setupUrls()}setupUrls(){let{host:t}=this,e=t==="0.0.0.0"||t==="::",s;if(e){s="localhost";try{this.urls.lanUrlForConfig=this.getLanIp(),this.urls.lanUrlForConfig&&(/^10[.]|^172[.](1[6-9]|2[0-9]|3[0-1])[.]|^192[.]168[.]/.test(this.urls.lanUrlForConfig)?this.urls.lanUrlForTerminal=this.prettyPrintUrl(this.urls.lanUrlForConfig):this.urls.lanUrlForConfig="")}catch{}}else s=t,this.urls.lanUrlForConfig=t,this.urls.lanUrlForTerminal=this.prettyPrintUrl(this.urls.lanUrlForConfig);this.urls.localUrlForTerminal=this.prettyPrintUrl(s),this.urls.localUrlForBrowser=this.formatUrl(s)}getLanIp(){let{int:t}=ye();return de(t||"")||"127.0.0.1"}formatUrl(t){let{protocol:e,port:s,pathname:i}=this.imf;return Ft.format({protocol:e,hostname:t,port:s,pathname:i})}prettyPrintUrl(t){let{protocol:e,port:s,pathname:i}=this.imf;return Ft.format({protocol:e,hostname:t,port:Mt.bold(s),pathname:i})}},O=new q});var Y,j,Z=l(()=>{"use strict";Q();y();d();Y=class{isADB=!1;isHttps=!1;get isHttpBase(){let t=n.empOptions.base||"";return t.indexOf("http://")>-1||t.indexOf("https://")>-1}setup(){if(this.isADB=!!n.empOptions.autoDevBase&&n.mode==="development"&&!this.isHttpBase,!this.isADB)return;let{server:t,https:e}=n.empOptions.server||{};this.isHttps=t==="https"||typeof t=="object"&&t.type==="https"||e===!0;let s=O.getLanIp(),i=this.isHttps?"https":"http",o=n.empOptions.server?.port||8e3;n.empOptions.base=`${i}://${s}:${o}/`,n.empOptions.server=g({port:o,client:{webSocketURL:`${this.isHttps?"wss":"ws"}://${s}:${o}/ws`}},n.empOptions.server)}},j=new Y});var K,At,zt=l(()=>{"use strict";Z();K=class{async afterGetEmpOptions(){j.setup()}},At=new K});import be from"node:fs";var tt,Bt,Gt=l(()=>{"use strict";y();Dt();zt();tt=class{store;appSrc="src";appEntry="";base="";target=[];assign(t,e){return e=e||{},g(t,e)}empShareLib=new L;isESM=!1;async autoDevSet(){this.store.mode==="development"&&this.store.empOptions.autoDevBase}checkIsESM(t){return["es3","es5"].indexOf(t)===-1}async setup(t){this.store=t,await this.syncEmpOptions(),await At.afterGetEmpOptions(),this.isESM=this.checkIsESM(this.build.target),this.store.empOptions.target?(this.target=this.store.empOptions.target,Array.isArray(this.target)&&!this.target.includes(this.build.target)&&this.target.push(this.build.target)):this.target=["web",this.build.target];let{appSrc:e,base:s,appEntry:i}=this.store.empOptions;e&&(this.appSrc=e),s&&(this.base=s),i&&(this.appEntry=i),this.store.empConfig.empShare&&await this.empShareLib.setup()}async chain(){this.store.empOptions.chain&&await this.store.empOptions.chain(this.store.chain)}async plugins(){let t=[];this.store.empOptions.plugins&&Array.isArray(this.store.empOptions.plugins)&&this.store.empOptions.plugins.length>0&&(this.store.empOptions.plugins.map(e=>{t.push(e.rsConfig(this.store))}),await Promise.all(t))}get debug(){return this.assign({loggerLevel:"info",clearLog:!0,progress:!0,showRsconfig:!1,infrastructureLogging:{appendOnly:!0,level:"warn"}},this.store.empOptions.debug)}get build(){let t=this.store.empOptions.build?.staticDir?`${this.store.empOptions.build?.staticDir}/`:"";return this.assign({outDir:"dist",staticDir:t,assetsDir:"assets",publicDir:"public",chunkIds:this.store.isDev?"named":"deterministic",sourcemap:!0,minify:!this.store.isDev,minOptions:{},target:"es5"},{...this.store.empOptions.build,staticDir:t})}get html(){let t=this.store.empOptions.html?.template?[]:{charset:{charset:"utf-8"},"http-equiv":{"http-equiv":"X-UA-Compatible",content:"IE=edge"},viewport:{content:"width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"}};return this.assign({lang:"zh-CN",title:"EMP",inject:"body",minify:!this.store.isDev,scriptLoading:this.isESM?"module":"defer",meta:t,files:{css:[],js:[]},tags:{headTags:[],bodyTags:[]}},this.store.empOptions.html)}get entries(){return this.store.empOptions.entries?this.store.empOptions.entries:{}}get react(){return this.assign({hmr:!0,svgr:!1},this.store.empOptions.react)}get server(){let t={host:"0.0.0.0",port:8e3,open:process.platform==="darwin",hot:!0,watchFiles:["src/**/*.html"],static:[{directory:this.store.publicDir,watch:this.store.isDev}],allowedHosts:["all"],historyApiFallback:!0,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, PUT, DELETE, PATCH, OPTIONS","Access-Control-Allow-Headers":"X-Requested-With, content-type, Authorization"}};return this.assign(t,this.store.empOptions.server)}get empShare(){return this.assign({name:"",filename:"emp.js",shared:{},mfVersion:1.5},this.store.empOptions.empShare)}get css(){return this.assign({postcss:[]},this.store.empOptions.css)}get output(){let t=(this.store.isDev,".[contenthash:8]"),e=this.store.isDev?"":".[contenthash:8]",{assetsDir:s,staticDir:i}=this.store.empConfig.build,o={publicPath:this.store.empConfig.base?this.store.empConfig.base:"auto",crossOriginLoading:"anonymous",filename:`${i}js/[name]${t}.js`,cssFilename:`${i}css/[name]${e}.css`,cssChunkFilename:`${i}css/[name]${e}.css`,assetModuleFilename:`${i}${s}/[name]${t}[ext][query]`,path:this.store.outDir,clean:!0};return this.assign(o,this.store.empOptions.output)}get define(){let t={mode:this.store.mode,env:this.store.cliOptions.env};return this.store.empOptions.define&&(t={...t,...this.store.empOptions.define}),this.setDefine(t)}setDefine(t){let e=this.store.empOptions.defineFix?this.store.empOptions.defineFix:this.isESM?"esm":"cjs",s={};return Object.keys(t).map(i=>{(e==="all"||e==="esm")&&(s[`import.meta.env.${i}`]=JSON.stringify(t[i])),(e==="all"||e==="cjs")&&(s[`process.env.${i}`]=JSON.stringify(t[i])),s[`${i}`]=JSON.stringify(t[i])}),s}get externals(){return this.assign(this.empShareLib.externals,this.store.empOptions.externals)}get resolve(){return g({alias:{src:this.store.resolve("src"),"@":this.store.resolve("src")},extensions:["...",".js",".jsx",".mjs",".ts",".tsx",".css",".less",".scss",".sass",".json",".wasm",".vue",".svg",".svga"]},this.store.empOptions.resolve)}async syncEmpOptions(){let t=this.store.resolve("emp-config.js");if(!be.existsSync(t))return;let{default:e}=await import(this.store.importFileUrl(t));typeof e=="function"?this.store.empOptions=await e(this.store):this.store.empOptions=e||{}}get moduleTransformRule(){let{moduleTransform:t}=this.store.empOptions,e=this.assign({defaultExclude:!1},t),s={and:[],not:[]};return e.defaultExclude===!0&&s.and.push(/(node_modules|bower_components)/),e?.exclude&&(s.and=s.and.concat(e.exclude)),t?.include&&(s.not=e.include),s}get cacheDir(){return this.store.empOptions.cacheDir?this.store.empOptions.cacheDir:"node_modules/.emp-cache"}get lifeCycle(){return this.assign({},this.store.empOptions.lifeCycle)}get reactRuntime(){if(this.store.reactVersion)return this.store.empOptions.reactRuntime?this.store.empOptions.reactRuntime:R(this.store.reactVersion,"17")>-1?"automatic":"classic"}},Bt=new tt});import v from"node:path";import ve from"node:fs/promises";import Ce from"webpack-chain";import{pathToFileURL as we}from"node:url";import xe from"node:util";var et,n,d=l(()=>{"use strict";dt();Tt();b();Gt();y();et=class{empPkg={dependencies:{},devDependencies:{},version:"2.0.0",name:""};pkg={dependencies:{},devDependencies:{},version:"0.0.0",name:""};root=process.cwd();empRoot=gt;empSource=v.resolve(this.empRoot,"dist");resolve=t=>v.isAbsolute(t)?t:v.resolve(this.root,t);empResolve=t=>v.resolve(this.empRoot,t);appSrc="";outDir="";publicDir="";resource={dir:"",key:"",cert:""};cacheDir="";mode="development";cliMode="dev";isDev=!0;reactVersion=void 0;cliOptions;chain;rsConfig;empOptions={};empConfig;async setup(t,e){await this.initVars(t,e),this.empConfig=Bt,await this.empConfig.setup(this),this.initPaths(),this.chain=new Ce,await jt.setup(this),this.setLogger(),this.toConfig(),this.logConfig()}async initVars(t,e){this.cliOptions=e||{},this.cliMode="prod",this.mode=t==="dev"?"development":"production",this.isDev=this.mode==="development";let s=await U(this.empResolve("package.json")),i=await U(this.resolve("package.json"));this.empPkg={...this.empPkg,...s},this.pkg={...this.pkg,...i},this.reactVersion=this.pkg.dependencies.react||this.pkg.devDependencies.react}initPaths(){this.appSrc=this.resolve(this.empConfig.appSrc),this.outDir=this.resolve(this.empConfig.build.outDir),this.publicDir=this.resolve(this.empConfig.build.publicDir),this.cacheDir=this.resolve(this.empConfig.cacheDir),this.resource.dir=v.join(this.empRoot,"resource"),this.resource.cert=v.join(this.resource.dir,"emp.cert"),this.resource.key=v.join(this.resource.dir,"emp.key")}setLogger(){let t=this.cliMode==="dev"?"debug":"info";this.empConfig.debug.loggerLevel&&(t=this.empConfig.debug.loggerLevel),a.setup({pname:`EMP\u26A1${this.empPkg.version}${this.cliMode==="dev"?".DEV":""}`,logLevel:t})}merge(t){this.chain.merge(t)}importResolve(t,e){return ut(t,e)}importFileUrl(t){return we(t).toString()}toConfig(){this.rsConfig=this.chain.toConfig()}logConfig(){if(this.empConfig.debug.showRsconfig)if(typeof this.empConfig.debug.showRsconfig=="string"){let t=v.join(this.root,this.empConfig.debug.showRsconfig);ve.writeFile(t,JSON.stringify(this.rsConfig,null,2))}else{let t={colors:!0,depth:null},e=typeof this.empConfig.debug.showRsconfig=="object"?g(t,this.empConfig.debug.showRsconfig):t;console.log(a.link("[Compile Config]")),console.log(xe.inspect(this.rsConfig,e))}}},n=new et});import{exec as Se}from"node:child_process";import{promisify as Ee}from"node:util";var It,Ut,Oe,$e,Ht,Nt=l(()=>{"use strict";b();d();It=Ee(Se),Ut=["Google Chrome Canary","Google Chrome Dev","Google Chrome Beta","Google Chrome","Microsoft Edge","Brave Browser","Vivaldi","Chromium"],Oe=async()=>{let r=process.env.BROWSER;if(!r||!Ut.includes(r)){let{stdout:t}=await It("ps cax");r=Ut.find(e=>t.includes(e))}return r},$e=async r=>{if(process.platform==="darwin")try{let e=await Oe();if(e){let s=`osascript openChrome.applescript "${encodeURI(r)}" "${e}"`;return await It(s,{cwd:n.resource.dir}),!0}}catch(e){a.debug(e)}try{let{default:e}=await import("open");return await e(r),!0}catch(e){return a.error("Failed to open start URL."),a.error(e),!1}},Ht=$e});import Pe from"net";import ke from"os";async function Vt(r,t="localhost"){if(r!==Re&&(r<_t||r>st))throw new Error(`Port number must lie between ${_t} and ${st}`);let e=r,s=Le(),i;t&&!s.has(t)?i=new Set([t]):i=s;let o=new Set(["EADDRINUSE","EACCES"]);for(;e<=st;)try{return await Te(e,i)}catch(p){if(!o.has(p.code))throw p;e+=1}throw new Error("No available ports found")}var _t,st,Re,Le,je,Te,Jt=l(()=>{"use strict";_t=1024,st=65535,Re=443,Le=()=>{let r=ke.networkInterfaces(),t=new Set([void 0,"0.0.0.0"]);for(let e of Object.values(r))if(e)for(let s of e)t.add(s.address);return t},je=(r,t)=>new Promise((e,s)=>{let i=Pe.createServer();i.unref(),i.on("error",s),i.listen(r,t,()=>{let{port:o}=i.address();i.close(()=>{e(o)})})}),Te=async(r,t)=>{let e=new Set(["EADDRNOTAVAIL","EINVAL"]);for(let s of t)try{await je(r,s)}catch(i){if(!e.has(i.code))throw i}return r}});import Wt from"node:fs/promises";import T from"chalk";var C,D=l(()=>{"use strict";b();d();y();Q();Nt();Jt();Z();C=class{sf={protocol:"http",host:"0.0.0.0",port:8e3,publicPath:"",publicHasHttp:!1,isOpenBrower:!1,url:"",urls:{localUrlForBrowser:"",localUrlForTerminal:"",lanUrlForTerminal:"",lanUrlForConfig:""}};async adaptServer(){this.sf.publicPath=n.rsConfig.output?.publicPath==="auto"?"/":n.rsConfig.output?.publicPath||"/",this.sf.isOpenBrower=!!n.empConfig.server.open,this.sf.protocol=this.isHttps?"https":"http",this.sf.host=n.empConfig.server.host?n.empConfig.server.host:this.sf.host,this.sf.port=n.empConfig.server.port,await this.serverPort(),O.setup(this.sf),this.sf.publicPath&&(this.sf.publicPath.indexOf("http://")>-1||this.sf.publicPath.indexOf("https://")>-1)?(this.sf.url=this.sf.publicPath,this.sf.publicHasHttp=!0,this.sf.urls.localUrlForTerminal=O.prettyPrintUrl("localhost")):(this.sf.urls=O.urls,this.sf.url=this.sf.urls.localUrlForBrowser)}startOpen(){let{urls:t}=this.sf;this.sf.publicHasHttp?(a.info(`${T.greenBright("\u279C")} Local: ${a.link(t.localUrlForTerminal)}`),a.info(`${T.greenBright("\u279C")} Network: ${a.link(this.sf.publicPath)}`)):(a.info(`${T.greenBright("\u279C")} Local: ${a.link(t.localUrlForTerminal)}`),a.info(`${T.greenBright("\u279C")} Network: ${a.link(t.lanUrlForTerminal)}
|
|
10
|
+
`)),this.sf.isOpenBrower&&Ht(this.sf.url)}async setup(t,e){await n.setup(t,e),n.empConfig.debug.clearLog&&Et(),a.title(`${t}`),await this.adaptServer(),await this.run()}async run(){}get isHttps(){let{server:t,https:e}=n.empConfig.server||{};return t==="https"||typeof t=="object"&&t.type==="https"||e===!0}getcert(){return Promise.all([Wt.readFile(n.resource.key),Wt.readFile(n.resource.cert)])}async serverPort(){if(j.isADB)return;let{port:t,host:e}=this.sf,s=await Vt(t,e);s!==t&&(this.sf.port=s,n.rsConfig.devServer?.port&&(n.rsConfig.devServer.port=s))}}});import u from"chalk";import w from"node:path";import{gzipSizeSync as De}from"gzip-size";import Fe from"node:fs";function Ie(r,t){let e=[r,t],s=["File","Size","Gzipped"].reduce((i,o,p)=>{let c=e[p],h=o;return c&&(h=o.length<c?o+" ".repeat(c-o.length):o),`${i+h} `}," ");console.log(u.bold.blue(s))}async function Xt(r){let t=r.toJson({all:!1,assets:!0,timings:!0});k(t.time);let s=t.assets.filter(m=>Be(m.name)).map(Ue);s.sort((m,P)=>m.size-P.size);let i=Math.max(...s.map(m=>m.sizeLabel.length)),o=Math.max(...s.map(m=>(m.folder+w.sep+m.name).length));Ie(o,i);let p=0,c=0;s.forEach(m=>{let{sizeLabel:P}=m,{name:ie,folder:oe,gzipSizeLabel:ne}=m,lt=(oe+w.sep+ie).length,ct=P.length;if(p+=m.size,c+=m.gzippedSize,ct<i){let z=" ".repeat(i-ct);P+=z}let mt=u.gray(m.folder+w.sep)+He(m.name);if(lt<o){let z=" ".repeat(o-lt);mt+=z}a.info(` ${mt} ${u.gray(P)} ${ne}`)});let h=`${u.bold.blue("Total size:")} ${F(p)}`,$=`${u.bold.blue("Gzipped size:")} ${F(c)}`;a.info(`
|
|
11
11
|
${h}
|
|
12
12
|
${$}
|
|
13
|
-
`)}function
|
|
14
|
-
${
|
|
15
|
-
`}async writeCode(
|
|
13
|
+
`)}function k(r=0){a.info(`${u.greenBright("\u2713")} Ready in ${Ot(Number(r))}`)}var Me,Ae,ze,Be,Ge,Ue,F,He,M=l(()=>{"use strict";d();b();y();Me=/\.html$/,Ae=/\.(?:js|mjs|cjs|jsx)$/,ze=/\.css$/,Be=r=>!/\.map$/.test(r)&&!/\.LICENSE\.txt$/.test(r),Ge=r=>r>300*1e3?u.red:r>100*1e3?u.yellow:u.white,Ue=r=>{let t=r.name.split("?")[0],e=F(r.size),s=w.basename(t),i=w.join(w.basename(n.empConfig.build.outDir),w.dirname(t)),o=Fe.readFileSync(w.join(n.empConfig.build.outDir,t)),p=o.length,c=De(o),h=Ge(c)(F(c));return{size:p,folder:i,name:s,gzippedSize:c,sizeLabel:e,gzipSizeLabel:h}};F=r=>{let t=r/1e3;return`${t.toFixed(t<1?2:1)} kB`},He=r=>Ae.test(r)?u.yellowBright(r):ze.test(r)?u.greenBright(r):Me.test(r)?u.blueBright(r):u.magenta(r)});var qt={};B(qt,{default:()=>Ve});import{rspack as Ne}from"@rspack/core";import{RspackDevServer as _e}from"@rspack/dev-server";var rt,Ve,Qt=l(()=>{"use strict";d();D();b();y();M();rt=class extends C{async run(){let t=g(n.rsConfig,{stats:{all:!1,colors:!0,assets:!1,chunks:!1,entrypoints:!1,timings:!1,version:!1,errors:!0,warnings:!0},devServer:{open:!1,setupExitSignals:!0}}),e=Ne(t);if(!n.rsConfig.devServer){a.error("devServer is not defined in config");return}let s=Object.assign({},n.rsConfig.devServer);if(this.isHttps&&(s.https===!0&&delete s.https,!s.server)){let[c,h]=await this.getcert();s.server={type:"https",options:{key:c,cert:h}}}let{afterDevServe:i,beforeDevServe:o}=n.empConfig.lifeCycle,p=new _e(s,e);this.startOpen(),o&&o(),await p.start(),p.middleware?.waitUntilValid(c=>{let h=c?.toJson({all:!1,colors:!1,assets:!1,chunks:!1,timings:!0});k(h.time),i&&i()})}},Ve=new rt});var Yt={};B(Yt,{default:()=>We});import{rspack as Je}from"@rspack/core";var it,We,Zt=l(()=>{"use strict";b();d();D();M();it=class extends C{async run(){let{afterBulid:t,beforeBuild:e}=n.empConfig.lifeCycle;e&&e(),Je(n.rsConfig,async(s,i)=>{if(s!==null){a.error(s.stack||s),s.message&&a.error(s.message);return}if(!i){a.red("Stats is Undefined.");return}i.hasErrors()&&(a.error(i.toString({colors:!0,children:!0})),a.red("Failed to compile."),process.exit(1)),i.hasWarnings()&&(a.yellow("Compiled with warnings."),a.warn(i.toString({colors:!0,children:!0}))),await Xt(i),t&&t()})}},We=new it});import Xe from"express";import qe from"cors";import Qe from"compression";import Ye from"https";var A,Kt=l(()=>{"use strict";D();A=class extends C{app;async init(){let t=Xe();t.use(Qe()),t.use(qe()),this.app=t}async server(){if(this.isHttps){let[t,e]=await this.getcert();Ye.createServer(typeof this.isHttps!="boolean"?this.isHttps:{key:t,cert:e},this.app).listen(this.sf.port,async()=>{this.startOpen(),await this.onReady()})}else this.app.listen(this.sf.port,async()=>{this.startOpen(),await this.onReady()})}async onReady(){}async middleware(){}async start(){await this.init(),await this.middleware(),await this.server()}}});var te={};B(te,{default:()=>ss});import Ze from"express";import Ke from"path";import ts from"node:fs/promises";import es from"node:fs";var ot,ss,ee=l(()=>{"use strict";Kt();d();b();M();ot=class extends A{timing=0;async run(){if(this.timing=Date.now(),!es.existsSync(n.outDir))return a.sysError(`emp serve must be executed after emp build,${n.outDir} not exist!`);let{beforeServe:t}=n.empConfig.lifeCycle;t&&t(),this.start()}async middleware(){let t=n.resolve(n.rsConfig.output?.path);this.app.use(Ze.static(t));let e=await ts.readFile(Ke.join(t,"index.html"),"utf8");this.app.get("*",(s,i)=>i.send(e))}async onReady(){k(Date.now()-this.timing);let{afterServe:t}=n.empConfig.lifeCycle;t&&t()}},ss=new ot});d();d();y();b();import{program as S}from"commander";import nt,{exit as rs}from"node:process";function se(){let r="20.0.0";R(r,nt.versions.node)===1&&(a.sysError(`\u5F53\u524D\u7248\u672C\u4E3Av${nt.versions.node} \u6700\u4F4E\u8981\u6C42\u4E3Av${r}`),rs(0)),S.version(n.empPkg.version,"-v, --version").usage("<command> [options]"),S.command("dev").description("Dev \u6A21\u5F0F").option("-e, --env <env>","\u90E8\u7F72\u73AF\u5883 dev\u3001test\u3001prod").option("-h, --hot","\u662F\u5426\u4F7F\u7528\u70ED\u66F4\u65B0 \u9ED8\u8BA4\u542F\u52A8").option("-o, --open","\u662F\u5426\u6253\u5F00\u8C03\u8BD5\u9875\u9762 \u9ED8\u8BA4\u4E0D\u6253\u5F00").option("-t, --ts","\u751F\u6210\u7C7B\u578B\u6587\u4EF6 \u9ED8\u8BA4\u4E3A false").option("-pr, --profile","\u7EDF\u8BA1\u6A21\u5757\u6D88\u8017").option("-cl, --clearLog <clearLog>","\u6E05\u7A7A\u65E5\u5FD7 \u9ED8\u8BA4\u4E3A true").option("-ev, --env-vars <key=value>","\u5B9A\u4E49\u4E00\u4E2A\u73AF\u5883\u53D8\u91CF -ev key=value \u591A\u4E2A\u73AF\u5883\u53D8\u91CF\u91CD\u590D\u8C03\u7528 -ev key=value -ev key=value",(t,e)=>{let[s,i]=t.split("=");return e[s]=i,e},{}).action(async t=>{let{default:e}=await Promise.resolve().then(()=>(Qt(),qt));await e.setup("dev",t)}),S.command("build").description("Build \u6A21\u5F0F").option("-e, --env <env>","\u90E8\u7F72\u73AF\u5883 dev\u3001test\u3001prod").option("-a, --analyze","\u751F\u6210\u5206\u6790\u62A5\u544A \u9ED8\u8BA4\u4E3A false").option("-t, --ts","\u751F\u6210\u7C7B\u578B\u6587\u4EF6 \u9ED8\u8BA4\u4E3A false").option("-pr, --profile","\u7EDF\u8BA1\u6A21\u5757\u6D88\u8017").option("-cl, --clearLog <clearLog>","\u6E05\u7A7A\u65E5\u5FD7 \u9ED8\u8BA4\u4E3A true").option("-ev, --env-vars <key=value>","\u5B9A\u4E49\u4E00\u4E2A\u73AF\u5883\u53D8\u91CF -ev key=value \u591A\u4E2A\u73AF\u5883\u53D8\u91CF\u91CD\u590D\u8C03\u7528 -ev key=value -ev key=value",(t,e)=>{let[s,i]=t.split("=");return e[s]=i,e},{}).action(async t=>{let{default:e}=await Promise.resolve().then(()=>(Zt(),Yt));await e.setup("build",t)}),S.command("serve").description("Server \u6A21\u5F0F").option("-cl, --clearLog <clearLog>","\u6E05\u7A7A\u65E5\u5FD7 \u9ED8\u8BA4\u4E3A true").action(async t=>{let{default:e}=await Promise.resolve().then(()=>(ee(),te));await e.setup("serve",t)}),S.command("dts").description("\u62C9\u53D6 remote \u9879\u76EE\u7684 d.ts").option("-p, --typingsPath <typingsPath>","\u4E0B\u8F7D\u76EE\u5F55").option("-e, --env <env>","\u90E8\u7F72\u73AF\u5883 dev\u3001test\u3001prod").action(t=>{}),S.command("init").description("\u521D\u59CB\u5316 emp \u9879\u76EE").option("-d, --data [data]","JSON\u6570\u636E http\u5730\u5740 \u6216\u8005 \u6587\u4EF6\u8DEF\u5F84\u76F8\u5BF9\u3001\u7EDD\u5BF9\u8DEF\u5F84").action(t=>{}),S.parse(nt.argv)}d();import is from"fast-glob";import re from"node:fs/promises";import pt from"node:path";var os=/(?:(?:import|export)\s?(?:type)?\s?(?:(?:\{[^;\n]+\})|(?:[^;\n]+))\s?from\s?['"][^;\n]+['"])|(?:import\(['"][^;\n]+?['"]\))/g,ns=/(?:import|export)\s?(?:type)?\s?\{?.+\}?\s?from\s?['"](.+)['"]/,ps=/import\(['"]([^;\n]+?)['"]\)/,at=class{list=[];outDir=n.resolve("dist");aliasName="@empjs/cli";async setup(t,e){t&&(this.outDir=t),e&&(this.aliasName=e);let s=await this.readDts();await this.writeCode(s)}async readDts(){this.list=await is([`${n.empConfig.build.outDir}/**/*.d.ts`]);let t=[];this.list.map(s=>{s=n.resolve(s),t.push(this.readFile(s))});let e=await Promise.all(t);return e=e.map(s=>this.replaceAliasPath(s)),e}async readFile(t){let e=await re.readFile(t,{encoding:"utf-8"});return{src:t,code:e}}replaceAliasPath({src:t,code:e}){e=e.replace(os,i=>{let o=i.match(ns);if(o||(o=i.match(ps)),o&&o[1]){let p=o[1];if(!p.startsWith("."))return i;let c=pt.resolve(pt.dirname(t),p).replace(this.outDir,this.aliasName);return i.replace(o[1],c)}return i});let s=t.replace(this.outDir,this.aliasName).replace(".d.ts","");return s.endsWith("/index")&&(s=s.replace("/index","")),e=this.warpDeclareModule(s,e),{code:e,src:t,mod:s}}warpDeclareModule(t,e){return`declare module '${t}' {\r
|
|
14
|
+
${e}}\r
|
|
15
|
+
`}async writeCode(t){let e="";t.map(s=>{e+=s.code}),await re.writeFile(pt.join(this.outDir.replace("dist","types"),"type.d.ts"),e)}},as=new at;function Ri(r){return r}export{Ri as defineConfig,as as dts,se as runScript,n as store};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GlobalStore } from '../store';
|
|
2
|
-
import { BuildType, DebugType, EMPShareType, HtmlType, LifeCycle, ReactType, ServerType } from '../types/config';
|
|
2
|
+
import { BuildType, DebugType, EMPShareType, HtmlType, LifeCycle, ReactType, RsTarget, ServerType } from '../types/config';
|
|
3
3
|
import { Output } from '@rspack/core';
|
|
4
4
|
import { EMPShareLib } from '../store/empShareLib';
|
|
5
5
|
export declare class EmpConfig {
|
|
@@ -22,9 +22,16 @@ export declare class EmpConfig {
|
|
|
22
22
|
* @default undefined
|
|
23
23
|
*/
|
|
24
24
|
base: string;
|
|
25
|
+
target: RsTarget;
|
|
25
26
|
private assign;
|
|
26
27
|
empShareLib: EMPShareLib;
|
|
28
|
+
/**
|
|
29
|
+
* 是否启动 esm 模块
|
|
30
|
+
* @default true
|
|
31
|
+
*/
|
|
32
|
+
isESM: boolean;
|
|
27
33
|
autoDevSet(): Promise<void>;
|
|
34
|
+
checkIsESM(target: string): boolean;
|
|
28
35
|
setup(store: GlobalStore): Promise<void>;
|
|
29
36
|
chain(): Promise<void>;
|
|
30
37
|
plugins(): Promise<void>;
|
|
@@ -4,11 +4,25 @@ export type externalAssetsType = {
|
|
|
4
4
|
js: string[];
|
|
5
5
|
css: string[];
|
|
6
6
|
};
|
|
7
|
+
export type ImportMapType = {
|
|
8
|
+
imports: {
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
7
12
|
export declare class EMPShareLib {
|
|
8
13
|
externals: Configuration['externals'] | any;
|
|
9
14
|
externalAssets: externalAssetsType;
|
|
10
15
|
private exp;
|
|
11
|
-
|
|
12
|
-
|
|
16
|
+
config: EMPShareType;
|
|
17
|
+
importMap: ImportMapType;
|
|
18
|
+
version: EMPShareType['mfVersion'];
|
|
19
|
+
setup(): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* 是否取用 importMap
|
|
22
|
+
*/
|
|
23
|
+
get useImportMap(): boolean | undefined;
|
|
24
|
+
get pluginConfig(): any;
|
|
25
|
+
prepareEsm(): void;
|
|
26
|
+
setShareLib(): Promise<void>;
|
|
13
27
|
private setExternalAssets;
|
|
14
28
|
}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import type { Configuration as RsConfig } from '@rspack/core';
|
|
2
3
|
import { Configuration as devServerConfig } from '@rspack/dev-server';
|
|
3
4
|
import Chain from 'webpack-chain';
|
|
4
5
|
import { Externals, HtmlRspackPluginOptions, ModuleFederationPluginOptions, Output, Resolve, RuleSetRule, SwcJsMinimizerRspackPluginOptions } from '@rspack/core';
|
|
5
6
|
import { EMP3PluginType } from './plugin';
|
|
7
|
+
import { InspectOptions } from 'node:util';
|
|
6
8
|
export type LoggerType = 'debug' | 'info' | 'warn' | 'error';
|
|
7
9
|
export type DebugType = {
|
|
8
10
|
loggerLevel: LoggerType;
|
|
9
11
|
clearLog: boolean;
|
|
10
12
|
progress: boolean;
|
|
11
|
-
showRsconfig: boolean | string;
|
|
13
|
+
showRsconfig: boolean | string | InspectOptions;
|
|
12
14
|
/**
|
|
13
15
|
* 是否显示执行日志
|
|
14
16
|
* @default false
|
|
@@ -78,7 +80,12 @@ export type BuildType = {
|
|
|
78
80
|
* @default {}
|
|
79
81
|
*/
|
|
80
82
|
minOptions?: SwcJsMinimizerRspackPluginOptions;
|
|
83
|
+
/**
|
|
84
|
+
* 生成代码 参考 https://swc.rs/docs/configuring-swc#jsctarget
|
|
85
|
+
*/
|
|
86
|
+
target?: JscTarget;
|
|
81
87
|
};
|
|
88
|
+
export type JscTarget = 'es3' | 'es5' | 'es2015' | 'es2016' | 'es2017' | 'es2018' | 'es2019' | 'es2020' | 'es2021' | 'es2022';
|
|
82
89
|
export interface HtmlType extends HtmlRspackPluginOptions {
|
|
83
90
|
/**
|
|
84
91
|
* 基于项目的根目录 index.html url
|
|
@@ -197,6 +204,7 @@ export type LifeCycle = {
|
|
|
197
204
|
afterServe?: () => void;
|
|
198
205
|
beforeServe?: () => void;
|
|
199
206
|
};
|
|
207
|
+
export type RsTarget = RsConfig['target'];
|
|
200
208
|
export type EmpOptions = {
|
|
201
209
|
/**
|
|
202
210
|
* publicPath 根路径 可参考webpack,业务模式默认为 auto
|
|
@@ -205,6 +213,10 @@ export type EmpOptions = {
|
|
|
205
213
|
* @default undefined
|
|
206
214
|
*/
|
|
207
215
|
base?: string;
|
|
216
|
+
/**
|
|
217
|
+
* 构建target
|
|
218
|
+
*/
|
|
219
|
+
target?: RsConfig['target'];
|
|
208
220
|
/**
|
|
209
221
|
* 启动后 自动设置 base 为当前 Ip+port的路径如 base = http://127.0.0.1:8080/ 并且固定 ws 方便代理调试
|
|
210
222
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@empjs/cli",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.28",
|
|
4
4
|
"description": "emp",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -81,9 +81,9 @@
|
|
|
81
81
|
"tsc-alias": "^1.8.8"
|
|
82
82
|
},
|
|
83
83
|
"dependencies": {
|
|
84
|
-
"@rspack/core": "0.5.
|
|
85
|
-
"@rspack/dev-server": "0.5.
|
|
86
|
-
"@rspack/plugin-react-refresh": "0.5.
|
|
84
|
+
"@rspack/core": "0.5.9",
|
|
85
|
+
"@rspack/dev-server": "0.5.9",
|
|
86
|
+
"@rspack/plugin-react-refresh": "0.5.9",
|
|
87
87
|
"@svgr/webpack": "^8.1.0",
|
|
88
88
|
"@types/node": "^20.8.7",
|
|
89
89
|
"@types/react": "^18.2.30",
|
|
@@ -109,8 +109,6 @@
|
|
|
109
109
|
"table": "^6.8.1",
|
|
110
110
|
"typescript-plugin-css-modules": "^5.0.2",
|
|
111
111
|
"webpack-bundle-analyzer": "^4.9.1",
|
|
112
|
-
"webpack-chain": "^6.5.1"
|
|
113
|
-
"webpack-dev-middleware": "^7.0.0",
|
|
114
|
-
"webpack-hot-middleware": "^2.26.1"
|
|
112
|
+
"webpack-chain": "^6.5.1"
|
|
115
113
|
}
|
|
116
|
-
}
|
|
114
|
+
}
|