@ikaros-cli/ikaros 2.1.1 → 2.1.2
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/index.mjs +2 -2
- package/package.json +9 -9
package/dist/index.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import{createRequire as e}from"node:module";import{Option as t,program as n}from"commander";import r,{dirname as i,extname as a,join as o,resolve as s}from"node:path";import c,{pathToFileURL as l}from"node:url";import u from"node:fs";import d,{readFile as f}from"node:fs/promises";import{isFunction as p,isString as m}from"es-toolkit";import{isArray as h,isEmpty as g,isObject as _}from"es-toolkit/compat";import v from"fs/promises";import{z as y}from"zod/v4";import b,{join as x}from"path";import S from"fs-extra";import{config as C}from"dotenv";import w from"chalk";import{parse as ee}from"yaml";import{transform as te}from"oxc-transform";import{rspack as T}from"@rspack/core";import{RspackDevServer as ne}from"@rspack/dev-server";import re from"node:os";import E from"pretty-bytes";import ie from"easy-table";import ae from"cli-cursor";import oe from"node:process";import{RsdoctorRspackPlugin as se}from"@rsdoctor/rspack-plugin";import ce from"compression-webpack-plugin";import{ModuleFederationPlugin as le}from"@module-federation/enhanced/rspack";import{detect as ue}from"detect-port";var de=`@ikaros-cli/ikaros`,D=`2.1.
|
|
1
|
+
import{createRequire as e}from"node:module";import{Option as t,program as n}from"commander";import r,{dirname as i,extname as a,join as o,resolve as s}from"node:path";import c,{pathToFileURL as l}from"node:url";import u from"node:fs";import d,{readFile as f}from"node:fs/promises";import{isFunction as p,isString as m}from"es-toolkit";import{isArray as h,isEmpty as g,isObject as _}from"es-toolkit/compat";import v from"fs/promises";import{z as y}from"zod/v4";import b,{join as x}from"path";import S from"fs-extra";import{config as C}from"dotenv";import w from"chalk";import{parse as ee}from"yaml";import{transform as te}from"oxc-transform";import{rspack as T}from"@rspack/core";import{RspackDevServer as ne}from"@rspack/dev-server";import re from"node:os";import E from"pretty-bytes";import ie from"easy-table";import ae from"cli-cursor";import oe from"node:process";import{RsdoctorRspackPlugin as se}from"@rsdoctor/rspack-plugin";import ce from"compression-webpack-plugin";import{ModuleFederationPlugin as le}from"@module-federation/enhanced/rspack";import{detect as ue}from"detect-port";var de=`@ikaros-cli/ikaros`,D=`2.1.2`;const O=(e,t)=>{let n=e,r=t;for(let e of Object.keys(r)){let t=r[e],i=n[e];_(t)&&_(i)?n[e]=O(i,t):n[e]=t}return e};async function k(e){try{let t=x(process.cwd(),`node_modules`,e);return await v.access(t,v.constants.F_OK),!0}catch(e){if(e.code===`ENOENT`)return!1;throw e}}const fe={target:y.enum([`pc`,`mobile`]).optional().default(`pc`),pages:y.custom().optional(),enablePages:y.union([y.array(y.string()),y.literal(!1)]).optional(),define:y.custom().optional(),build:y.object({base:y.string().optional().default(`/`),assetsDir:y.string().optional(),sourceMap:y.boolean().optional().default(!1),outDirName:y.string().optional().default(`dist`)}).optional(),resolve:y.object({alias:y.record(y.string(),y.string()).optional(),extensions:y.array(y.string()).optional()}).optional(),server:y.object({port:y.number().int().min(1024).max(65535).optional()}).optional(),electron:y.unknown().optional()},pe=y.object({bundler:y.custom().optional().default(`rspack`).refine(e=>e===`rspack`,{message:`bundler must be 'rspack' for rspack config`}),...fe,moduleFederation:y.union([y.custom(),y.array(y.custom())]).optional(),plugins:y.union([y.custom(),y.array(y.custom())]).optional(),loaders:y.array(y.custom()).optional(),experiments:y.custom().optional(),cdnOptions:y.custom().optional(),server:y.object({port:y.number().int().min(1024).max(65535).optional(),proxy:y.custom().optional(),https:y.union([y.boolean(),y.record(y.string(),y.unknown())]).optional().default(!1)}).optional(),css:y.object({lightningcssOptions:y.record(y.string(),y.unknown()).optional(),sourceMap:y.boolean().optional(),lessOptions:y.record(y.string(),y.unknown()).optional(),sassOptions:y.record(y.string(),y.unknown()).optional(),stylusOptions:y.record(y.string(),y.unknown()).optional()}).optional(),build:y.object({base:y.string().optional().default(`/`),assetsDir:y.string().optional(),gzip:y.boolean().optional().default(!1),sourceMap:y.boolean().optional().default(!1),outDirName:y.string().optional().default(`dist`),outReport:y.boolean().optional().default(!1),cache:y.boolean().optional().default(!1),dependencyCycleCheck:y.boolean().optional().default(!1)}).optional()}),me=y.object({bundler:y.literal(`vite`),...fe,server:y.object({port:y.number().int().min(1024).max(65535).optional(),proxy:y.record(y.string(),y.unknown()).optional(),https:y.union([y.boolean(),y.record(y.string(),y.unknown())]).optional()}).optional(),vite:y.object({plugins:y.unknown().optional()}).strict().optional()}).passthrough().superRefine((e,t)=>{for(let n of[`plugins`,`loaders`,`experiments`,`cdnOptions`,`moduleFederation`,`css`]){let r=e;n in r&&r[n]!==void 0&&t.addIssue({code:y.ZodIssueCode.custom,path:[n],message:`bundler='vite' 时不支持 ${String(n)},请使用 vite.plugins 或 Vite 原生配置能力`})}}),A=y.union([me,pe]),j=[],M=()=>{let e=(e,t)=>({DONE:w.bgGreen.white,ERROR:w.bgRed.white,OKAY:w.bgBlue.white,WARNING:w.bgYellow.white,INFO:w.bgCyan.white})[e](` ${e} `)+` ${t}`;return{done:({text:t,onlyText:n})=>{if(n)return e(`DONE`,t);console.log(e(`DONE`,t))},error:({text:t,onlyText:n})=>{if(n)return e(`ERROR`,t);console.error(e(`ERROR`,t))},okay:({text:t,onlyText:n})=>{if(n)return e(`OKAY`,t);console.log(e(`OKAY`,t))},warning:({text:t,onlyText:n})=>{if(n)return e(`WARNING`,t);console.warn(e(`WARNING`,t))},info:({text:t,onlyText:n})=>{if(n)return e(`INFO`,t);console.info(e(`INFO`,t))},emitEvent:e=>{let t=new Date().toLocaleTimeString(`en-US`,{hour12:!1}).split(` `)[0];j.push(`[${t}] ${e}`)},clearEventArray:()=>{j.length=0},eventArray:j}},N=e=>e?x(P,`env`,`.env.${e}`):x(P,`env`,`.env`),he=async e=>{let{warning:t,emitEvent:n}=M();if(!await S.pathExists(x(P,`env`)))return n(t({text:`env folder not found`,onlyText:!0})),!1;if(e){if(!await S.pathExists(N(e)))return n(t({text:`.env.${e} file not found`,onlyText:!0})),!1}else return await S.pathExists(N())?!0:(n(t({text:`.env file not found`,onlyText:!0})),!1);return!0},P=process.cwd(),ge=async e=>await he(e)?e?C({path:N(e),quiet:!0}).parsed??{}:C({path:N(),quiet:!0}).parsed??{}:{};async function _e(e,t){let{code:n,errors:r}=await te(e,await f(e,`utf-8`),{lang:t?`ts`:`js`});if(r.length>0)throw Error(`Transformation failed: `+r.map(e=>e.message).join(`, `));return{code:n}}async function ve(e,t){let n=`${e}.timestamp-${Date.now()}-${Math.random().toString(16).slice(2)}`,r=`${n}.mjs`,i=`${l(n)}.mjs`;await d.writeFile(r,t);try{return(await import(i)).default}finally{await d.unlink(r)}}async function ye(e,t=!1){let{code:n}=await _e(e,t);return ve(e,n)}const F=new Map;F.set(`.mjs`,async e=>(await import(l(e).href)).default),F.set(`.ts`,async e=>await ye(e,!0)),F.set(`.json`,async e=>await S.readJson(e)),F.set(`.yaml`,async e=>ee(await d.readFile(e,`utf8`)));async function be({configFile:e}){let t,n=process.cwd(),r=`ikaros.config`,c=[`ts`,`mjs`,`json`,`yaml`].map(e=>`${o(n,r)}.${e}`),l=(await Promise.all(c.map(e=>S.pathExists(e)))).findIndex(Boolean);if(!(l<0)){if(t=a(c[l]),n=s(n,`${r}${t}`),e&&(n=i(e),t=a(e)),!F.has(t))throw Error(`No configuration file ! `);return F.get(t)(n)}}let I=function(e){return e.SERVER=`server`,e.BUILD=`build`,e}({});var L=class{set env(e){this._env=e}get env(){return this._env}set contextPkg(e){this._contextPkg=e}get contextPkg(){return this._contextPkg}get isElectron(){return this.options.platform===`desktopClient`}constructor(t){this.resolveContext=(...e)=>o(this.context,...e);let{command:n,options:r,configFile:i}=t;this.command=n,this.options=r,this.configFile=i,this.context=process.cwd(),this.contextRequire=e(o(this.context,`./`))}static async create(e){let t=new this(e);return await t.initialize(),t}async initialize(){await this.initContextPkg(),await this.initEnv(),await this.loadUserConfig(),await this.onAfterConfigLoaded(),await this.startCompile()}async onAfterConfigLoaded(){}async initContextPkg(){let e=this.resolveContext(`package.json`);try{await d.access(e,u.constants.F_OK)}catch{return}this.contextPkg=JSON.parse(await d.readFile(e,{encoding:`utf8`}))}async initEnv(){let{platform:e,mode:t}=this.options,n={PLATFORM:e,MODE:t},r=await ge(t);this.env={...n,...r}}async loadUserConfig(){this.userConfig=await this.getUserConfig()}resolveContextModule(e){try{return this.contextRequire.resolve(e)}catch{return}}loadContextModule(e){return this.contextRequire(e)}async getUserConfig(){let{configFile:e}=this,t=await be({configFile:e});if(t){if(p(t)){let e={mode:this.options.mode??``,env:{...this.env,PLATFORM:this.options.platform,MODE:this.options.mode??this.env?.MODE},command:this.command};return A.parse(await t(e))}if(_(t))return A.parse(t)}}async startCompile(){switch(this.command){case I.SERVER:await this.dev();break;case I.BUILD:await this.build();break;default:break}}};const R=e=>{let t=`Build failed with errors.
|
|
2
2
|
`;return e.toString({chunks:!1,colors:!0}).split(/\r?\n/).forEach(e=>{t+=` ${e}\n`}),t},z=(e,t)=>{let{onBuildStatus:n}=t??{};return new Promise((t,r)=>{let i=T(e);i.run((e,a)=>{i.close(i=>{let o=e||i;if(o)return n?.({success:!1,message:o.message||`build error`}),r(o);if(a?.hasErrors()){let e=R(a);return n?.({success:!1,message:e}),r(Error(e))}let s=a?.toString({chunks:!1,colors:!0});return n?.({success:!0,message:s}),t(s)})})})},xe=async(e,t)=>{let{port:n,onBuildStatus:r}=t??{},i=T(e),a=new ne(e.devServer,i);await new Promise((e,t)=>{a.startCallback(i=>i?(r?.({success:!1,port:n,message:i.message}),t(i)):(r?.({success:!0,port:n}),e()))})},Se=(e,t)=>{let{onBuildStatus:n,...r}=t??{};return new Promise((t,i)=>{T(e).watch({ignored:/node_modules/,aggregateTimeout:300,poll:!1,...r},(e,r)=>{if(e)return n?.({success:!1,message:e.message||`watch build error`}),i(e);if(r?.hasErrors()){let e=R(r);return n?.({success:!1,message:e}),i(Error(e))}let a=r?.toString({chunks:!1,colors:!0});return n?.({success:!0,message:a}),t(a)})})},B=x(process.cwd(),`./`),V=[`...`,`.mjs`,`.jsx`,`.ts`,`.tsx`];x(B,`tsconfig.json`);const H=c.fileURLToPath(new c.URL(`../`,import.meta.url)),Ce=e(H),U=(...e)=>x(H,...e),W=(e,t)=>({loader:e.includes(`builtin`)?e:Ce.resolve(e),options:t}),we=(e,t)=>{let{lightningcss:n,sourceMap:r}=t??{},i=W(`builtin:lightningcss-loader`,{...n}),a=(e,n)=>{let a=[i],o=t&&t[`${e}`];return e&&e!==`css`&&a.push(W(`${e}-loader`,Object.assign(o??{},n,{sourceMap:r}))),a};return{less:a(`less`),sass:a(`sass`,{sassOptions:{indentedSyntax:!0,api:`modern-compiler`}}),scss:a(`sass`,{sassOptions:{api:`modern-compiler`}}),stylus:a(`stylus`),styl:a(`stylus`),css:a(`css`)}},Te=(e,t)=>{let n=we(e,t);return Object.entries(n).map(([e,t])=>({test:RegExp(`\\.${e}$`),use:t,type:`css/auto`}))};var G=class{constructor({env:e=`development`,mode:t=``}){this.list=[],this.env=`development`,this.mode=``,this.isDev=!0,this.env=e,this.mode=t,this.isDev=e===`development`}add(e){return e&&(h(e)?this.list=this.list.concat(e):this.list.push(e)),this}end(){return this.list}},K=class extends G{constructor({env:e=`development`,mode:t=``}){super({env:e,mode:t}),this.defaultScriptLoader=e=>[{test:/\.m?ts$/i,loader:`builtin:swc-loader`,options:{jsc:{parser:{syntax:`typescript`}}},type:`javascript/auto`,exclude:[x(B,`node_modules`)]},{test:/\.m?js$/i,loader:`builtin:swc-loader`,options:{isModule:`unknown`,rspackExperiments:e},type:`javascript/auto`,exclude:[x(B,`node_modules`)]}],this.defaultResourceLoader=[{test:/\.(png|jpe?g|gif|svg|ico)(\?.*)?$/,type:`asset/resource`,generator:{filename:this.isDev?`[id][ext]`:`assets/img/[contenthash][ext]`}},{test:/\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,type:`asset/resource`,generator:{filename:this.isDev?`[id][ext]`:`assets/media/[contenthash][ext]`}},{test:/\.(woff2?|eot|ttf|otf)(\?.*)?$/,type:`asset/resource`,generator:{filename:this.isDev?`[id][ext]`:`assets/fonts/[contenthash][ext]`}}]}useDefaultCssLoader(e){return Te(this.env,e).forEach(e=>this.add(e)),this}useDefaultScriptLoader(e){return this.add(this.defaultScriptLoader(e)),this}useDefaultResourceLoader(){return this.defaultResourceLoader.forEach(e=>this.add(e)),this}},q=class extends G{constructor({env:e=`development`,mode:t=``}){super({env:e,mode:t})}useDefaultEnvPlugin(e){let{frameworkEnv:t={},extEnv:n={},env:r={}}=e??{};return this.add(De({frameworkEnv:t,extEnv:n,env:r})),this}useCopyPlugin(){return this.env===`production`&&this.add(new T.CopyRspackPlugin({patterns:[{context:x(B,`public`),from:`./`,noErrorOnMissing:!0,globOptions:{ignore:[`**/index.html`,`.*`]}}]})),this}useHtmlPlugin(e){return this.add(new T.HtmlRspackPlugin({template:e??x(B,`index.html`)})),this}},Ee=class{constructor({pages:e,enablePages:t}){this.pages=e,this.enablePages=t,this.getEnablePages()}create(){let e={},t=[];return Object.keys(this.pages).forEach(n=>{e[n]={import:this.pages[n].entry,library:this.pages[n].library},t.push(new T.HtmlRspackPlugin({template:this.pages[n].html,filename:`${n}.html`,chunks:[n],scriptLoading:`blocking`,...this.pages[n].options}))}),{entry:e,plugins:t}}getEnablePages(){let{warning:e,emitEvent:t}=M();if(!g(this.pages)&&h(this.enablePages)){let n={},r=[];if(this.enablePages.forEach(e=>{this.pages[e]?n[e]=this.pages[e]:r.push(e)}),g(r)&&t(e({text:`当前设置页面${r.join()}不存在`,onlyText:!0})),g(n))return;this.pages=n}}};const De=({frameworkEnv:e={},extEnv:t={},env:n={}})=>{let r=Object.assign({},O(t,n)),i=Object.fromEntries(Object.entries(r).map(([e,t])=>[`import.meta.env.${e}`,JSON.stringify(t)])),a=Object.fromEntries(Object.entries({...i,...e}).map(([e,t])=>[e,t]));return new T.DefinePlugin(a)},J={name:de,version:D},Y=`@rspack/ikaros-stats-plugin`,X=w.hex(`#222222`);var Oe=class{constructor(e){this.startCompileHrtime=void 0,this.userConfig=e}apply(e){this.compiler=e,this.isDev=e.options.mode===`development`,new T.ProgressPlugin().apply(e),ae.hide(),this.isDev?this.initDevHook():this.initProdHook()}updateStartCompileTime(){this.startCompileHrtime=oe.hrtime()}getCurrentEndCompileTime(){let e=oe.hrtime(this.startCompileHrtime);return(e[0]*1e9+e[1])/1e6}getError(e){let{errors:t,errorsCount:n=0}=e;if(!(!t||n===0))return t.map(e=>`${X.bgRed(` ERROR `)} ${e.message.trim()}`).join(`
|
|
3
3
|
|
|
4
4
|
`)}getWarn(e){let{warnings:t,warningsCount:n=0}=e;if(!(!t||n===0))return t.map(e=>`${X.bgYellow(` WARN `)} ${e.message.trim()}`).join(`
|
|
5
5
|
|
|
6
6
|
`)}getEndTips(e,t){let{gray:n,cyan:r,red:i,green:a,yellow:o}=w,{errorsCount:s=-1,warningsCount:c=-1}=e,l=(t/1e3).toFixed(2);return n(s>0?`${r(J.name)} compiled with${i(` ${s} error`)}`:c>0?`compile ${a(`success`)} and with ${o(`${c} warning`)}, time: ${l}s`:`compile ${a(`success`)}, time: ${l}s.`)}getTableInfo(e){let{assets:t}=e;if(!t||t.length===0)return;let n=new ie,r=this.userConfig?.build?.gzip??!1,i=0,a=0,o=!1;for(let e=0;e<t.length;e++){let{name:s,size:c,related:l,info:u}=t[e];if(u.development)continue;let d=r&&h(l)?l.find(e=>e.type===`gzipped`).size:0;if(i+=c,a+=d,t.length>20&&e>=4&&e<t.length-1-4){o||(o=!0,n.cell(`name`,`....`),n.cell(`size`,`....`),r&&n.cell(`gzip`,`....`),n.newRow());continue}n.cell(`name`,s),n.cell(`size`,E(c)),r&&n.cell(`gzip`,E(d)),n.newRow()}return n.pushDelimeter(),n.cell(`name`,`There are ${t.length} files`),n.cell(`size`,E(i)),r&&n.cell(`gzip`,E(a)),n.newRow(),w.cyan.dim(n.toString().trim())}getHostList(){let{userConfig:e,compiler:t}=this,{devServer:n}=t.options,i=n?.server===`https`||typeof n?.server==`object`,a=Number(n?.port),o=[],s=``,c=Object.values(re.networkInterfaces());if(e){s=e.build?.base??``,(!s||s===`auto`)&&(s=`/`);let t=Object.keys(e?.pages||{})[0];t&&t!==`index`?s=r.join(s,`${t}.html`):s.endsWith(`/`)||(s+=`/`)}for(let e of c){let{address:t}=e?.find(e=>e.family===`IPv4`)||{};t&&o.push(t)}o.sort((e,t)=>{let n=e.split(`.`),r=t.split(`.`);for(let[t]of n.entries())if(e[t]!==r[t])return Number(r[t])-Number(e[t]);return 0});let l=o.indexOf(`127.0.0.1`);return l!==-1&&(o.splice(l,1),o.unshift(`localhost`)),o=o.map(e=>(i?(e=`https://${e}`,a!==443&&(e=e+`:`+a)):(e=`http://`+e,a!==80&&(e=e+`:`+a)),new URL(s,e).href)),o}initDevHook(){let{compiler:e}=this,t=this.getHostList(),{blue:n,cyan:r,gray:i}=w;e.hooks.environment.intercept({name:Y}),e.hooks.watchRun.intercept({name:Y,call:()=>{this.updateStartCompileTime()}}),e.hooks.done.intercept({name:Y,call:e=>{console.clear();let a=e.toJson({preset:`errors-warnings`,colors:!0}),{eventArray:o}=M(),{errorsCount:s=0,warningsCount:c=0}=a;if(s>0)console.log(this.getError(a)),console.log();else{c>0&&(console.log(this.getWarn(a)),console.log()),o.length>0&&(console.log(o.map(e=>e).join(`
|
|
7
|
-
`)),console.log());let{name:e,version:s}=J,l=`${r(`${e} v${s}`)} entry address:\n\n`;for(let e of t)l+=n(` ${e}\n`);console.log(i(l))}console.log(this.getEndTips(a,this.getCurrentEndCompileTime())),console.log()}})}initProdHook(){let{compiler:e}=this,t;e.hooks.environment.intercept({name:Y,call:()=>{console.log(w.gray(`start build...`)),this.updateStartCompileTime()}}),e.hooks.done.intercept({name:Y,call:e=>{t=e.toJson({preset:`normal`,colors:!0,assetsSort:`size`})}}),e.cache.hooks.shutdown.intercept({name:Y,done:()=>{let{errorsCount:e=0,warningsCount:n=0}=t;console.log(),e>0?(console.log(this.getError(t)),console.log()):(n>0&&(console.log(this.getWarn(t)),console.log()),console.log(this.getTableInfo(t)),console.log()),console.log(this.getEndTips(t,this.getCurrentEndCompileTime()))}})}};const Z=`@rspack/ikaros-cdn-plugin`,ke=/:([a-z]+)/gi;var Ae=class{constructor(e){this.isDev=!1,this.options={prodUrl:`https://unpkg.com/:name@:version/:path`,devUrl:`:name/:path`,crossOrigin:!1,...e}}apply(e){this.compiler=e,this.isDev=e.options.mode===`development`,this.handleExternals(),e.hooks.compilation.tap(Z,e=>{T.HtmlRspackPlugin.getCompilationHooks(e).alterAssetTags.tapAsync(Z,(e,t)=>{try{this.injectResources(e),t(null,e)}catch(e){t(e)}})})}handleExternals(){let e=this.compiler.options.externals||{};this.options.modules.filter(e=>!e.cssOnly).forEach(t=>{e[t.name]=t.var||t.name}),this.compiler.options.externals=e}injectResources(e){let t=this.options.modules,n=[];t.forEach(e=>{this.getStyles(e).forEach(e=>{n.push({tagName:`link`,voidTag:!0,attributes:{rel:`stylesheet`,href:e,...this.options.crossOrigin&&{crossorigin:this.options.crossOrigin}}})})}),t.filter(e=>!e.cssOnly).forEach(e=>{this.getScripts(e).forEach(e=>{n.push({tagName:`script`,voidTag:!0,attributes:{src:e,...this.options.crossOrigin&&{crossorigin:this.options.crossOrigin}}})})}),e.assetTags&&(e.assetTags.styles.unshift(...n.filter(e=>e.tagName===`link`)),e.assetTags.scripts.unshift(...n.filter(e=>e.tagName===`script`)))}getStyles(e){let t=[...e.styles||[]];return e.style&&t.unshift(e.style),t.map(t=>this.generateUrl(e,t))}getScripts(e){let t=[...e.paths||[]];return e.path&&t.unshift(e.path),t.map(t=>this.generateUrl(e,t))}joinUrl(e,t){return e=e.replace(/\/+$/,``),t=t.replace(/^\/+/,``),`${e}/${t}`}generateUrl(e,t){let n=this.isDev?e.devUrl||this.options.devUrl:e.prodUrl||this.options.prodUrl;return n.match(ke)?n.replace(ke,(n,r)=>{switch(r){case`name`:return e.name;case`version`:return e.version||this.getModuleVersion(e.name);case`path`:return t;default:return n}}):this.joinUrl(n,t)}getModuleVersion(t){try{return e(b.join(process.cwd(),`node_modules`))(b.join(t,`package.json`)).version}catch{return console.warn(w.yellow(`[${Z}] 无法获取模块 "${t}" 的版本信息`)),`latest`}}},je=class{constructor(e){this.options=e}createSourceMapPlugin(){let{isDev:e,userConfig:t}=this.options;if(e)return new T.EvalSourceMapDevToolPlugin({columns:!1,module:!0});if(t?.build?.sourceMap??!1)return new T.SourceMapDevToolPlugin({test:[/.js/,/.mjs/],filename:`[file].map[query]`})}createCssExtractPlugin(){if(!this.options.isDev)return new T.CssExtractRspackPlugin({filename:this.joinAssetsDir(`assets/css/[contenthash].css`),ignoreOrder:!0})}createDoctorPlugin(){let{isDev:e,userConfig:t}=this.options;if(!(e||!t?.build?.outReport))return new se}createGzipPlugin(){let{isDev:e,userConfig:t}=this.options;if(!(e||!t?.build?.gzip))return new ce}createCdnPlugin(){let{cdnOptions:e}=this.options.userConfig??{};if(!(!e||g(e.modules)))return new Ae(e)}createModuleFederationPlugin(){let e=this.options.userConfig?.moduleFederation;if(e)return h(e)?e.map(e=>new le(e)):new le(e)}createDependencyCyclePlugin(){let{isDev:e,userConfig:t}=this.options;if(!(e||!t?.build?.dependencyCycleCheck))return new T.CircularDependencyRspackPlugin({exclude:/node_modules/,failOnError:!1})}joinAssetsDir(...e){return[this.options.assetsDir,...e].join(`/`).replace(/\/+/g,`/`)}};const Me=e=>{let{isVue:t,isReact:n}=e;return t?{noParse:/^(vue|vue-router|vuex|vuex-router-sync)$/,env:{__VUE_OPTIONS_API__:!0,__VUE_PROD_DEVTOOLS__:!1,__VUE_PROD_HYDRATION_MISMATCH_DETAILS__:!1}}:n?{noParse:e=>/(react|react-dom|react-is)\.production\.min\.js$/.test(e),env:{REACT_APP_ENABLE_DEVTOOLS:!1}}:{env:void 0,noParse:void 0}},Ne=e=>e===I.SERVER?{minimize:!1,removeAvailableModules:!1,removeEmptyChunks:!1,splitChunks:!1}:{minimize:!0,minimizer:[new T.LightningCssMinimizerRspackPlugin,new T.SwcJsMinimizerRspackPlugin],splitChunks:{chunks:`all`,minSize:3e4,minChunks:1,maxAsyncRequests:5,maxInitialRequests:3,cacheGroups:{vendor:{test:/[\\/]node_modules[\\/]/,name:`vendors`,priority:10,chunks:`all`},common:{name:`common`,minChunks:2,priority:5,reuseExistingChunk:!0}}}},Pe=e=>{if(e.command!==I.SERVER&&e.userConfig?.build?.cache)return{cache:!0,experiments:{cache:{type:`persistent`}}}},Fe=e=>{let{userConfig:t,isElectron:n,resolveContext:r}=e,i=t?.build?.outDirName;if(n){let e=t?.electron,n=r(`dist/electron/renderer`);return e?.build?.outDir?o(r(e.build.outDir),`renderer`):n}return m(i)?r(i):r(`dist`)},Ie=(e,t)=>[e,t].filter(Boolean).join(`/`).replace(/\/+/g,`/`),Le=e=>{let{command:t,mode:n,env:r,context:i,contextPkg:a,userConfig:s,pages:c,browserslist:l,base:u,port:d,isElectron:f,resolveContext:p}=e,m=t===I.SERVER,h=m?`development`:`production`,g=new K({env:h,mode:n}),_=new q({env:h,mode:n}),{entry:v,plugins:y}=new Ee({pages:c,enablePages:s?.enablePages}).create(),{env:b,noParse:x}=Me({isVue:e.isVue,isReact:e.isReact}),S=g.useDefaultResourceLoader().useDefaultScriptLoader(s?.experiments).useDefaultCssLoader(s?.css).add(s?.loaders).end(),C=s?.build?.assetsDir??``,w=new je({command:t,userConfig:s,isDev:m,assetsDir:C}),ee=_.useDefaultEnvPlugin({extEnv:{...s?.define},frameworkEnv:b,env:r}).useCopyPlugin().add(y).add(new Oe).add(w.createSourceMapPlugin()).add(w.createCssExtractPlugin()).add(w.createDoctorPlugin()).add(w.createGzipPlugin()).add(w.createCdnPlugin()).add(w.createModuleFederationPlugin()).add(w.createDependencyCyclePlugin()).add(s?.plugins).end();return{mode:h,context:i,entry:v,target:f?`electron-renderer`:[`web`,`es2015`,`browserslist:${l}`],resolve:{alias:{"@":p(`src`),...s?.resolve?.alias},extensions:s?.resolve?.extensions||V,modules:[`node_modules`,p(`node_modules`),U(`node_modules`)]},output:{clean:!0,path:Fe({userConfig:s,isElectron:f,resolveContext:p}),publicPath:f?`./`:u,filename:m?`[name].[contenthash:8].js`:Ie(C,`assets/js/[contenthash:8].js`),chunkFilename:m?`[name].[contenthash:8].chunk.js`:Ie(C,`assets/js/[contenthash:8].chunk.js`),chunkLoadingGlobal:`${a?.name||`ikaros`}_chunk`,pathinfo:!1},optimization:Ne(t),stats:`none`,watchOptions:{aggregateTimeout:500,ignored:/node_modules/},module:{rules:S,noParse:x},plugins:ee,devServer:{hot:!0,port:d,server:(()=>{let e=s?.server?.https;return e?e===!0?`https`:{type:`https`,options:e}:`http`})(),allowedHosts:`all`,proxy:s?.server?.proxy,historyApiFallback:{rewrites:[{from:RegExp(`^${u}`),to:o(u,`index.html`)}]},headers:{"Access-Control-Allow-Origin":`*`},static:{directory:p(`public`),publicPath:u},client:{logging:`none`,overlay:{errors:!0,warnings:!1,runtimeErrors:!1},webSocketURL:`auto://0.0.0.0:${d}/ws`}},experiments:{css:!0},...Pe({command:t,userConfig:s})}},Re=e=>{let t=e===`mobile`,n=[`defaults`];return t?n.push(`IOS >= 16`,`Chrome >= 80`):n.push(`>0.2%`,`Chrome >= 90`,`Safari >= 16`,`last 2 versions`,`not dead`),n.join(`,`)},ze=(e,t)=>t?{index:{html:e(`src/renderer/index.html`),entry:e(`src/renderer/index`)}}:{index:{html:e(`index.html`),entry:e(`src/index`)}},Be=async e=>{let{command:t,resolveContext:n,getUserConfig:r,isElectron:i}=e,a=await r(),o=a?.build?.base??`/`;if(t===I.SERVER&&/^https?:/.test(o)){let e=w.cyan(`build.base`);throw Error(`本地开发时 ${e} 不应该为外部 Host!`)}let s=a?.target??`pc`,c=a?.pages??ze(n,!!i),l=a?.server?.port??await ue(`8080`),u=!1,d=!1;try{let[e,t]=await Promise.all([k(`react`),k(`vue`)]);u=t,d=e}catch{}return{userConfig:a,base:o,target:s,pages:c,port:l,browserslist:Re(s),isVue:u,isReact:d}},Ve=async e=>{let{command:t,options:n,env:r,context:i,contextPkg:a,userConfig:o,isElectron:s,resolveContext:c,loadViteAdapter:l}=e,u=await Be({command:t,resolveContext:c,getUserConfig:async()=>o,isElectron:s}),d=u.userConfig?.bundler??`rspack`;return{bundler:d,config:(()=>{switch(d){case`vite`:{let e=l?.();if(!e)throw Error(`bundler='vite' 需要安装可选依赖 @ikaros-cli/ikaros-bundler-vite`);return e.createWebViteConfig({command:t,mode:n.mode,env:r,context:i,userConfig:u.userConfig,pages:u.pages,base:u.base,port:u.port,isElectron:s,resolveContext:c})}case`rspack`:default:return Le({command:t,mode:n.mode,env:r,context:i,contextPkg:a,userConfig:u.userConfig,pages:u.pages,browserslist:u.browserslist,base:u.base,port:u.port,isElectron:s,isVue:u.isVue,isReact:u.isReact,resolveContext:c})}})(),pre:u}},He=()=>{let e=`@ikaros-cli/ikaros-bundler-vite`,t=[`你启用了 bundler='vite',但未安装可选依赖 ${e}。`,``,`请安装后重试:`,` pnpm add -D ${e}`];return Error(t.join(`
|
|
7
|
+
`)),console.log());let{name:e,version:s}=J,l=`${r(`${e} v${s}`)} entry address:\n\n`;for(let e of t)l+=n(` ${e}\n`);console.log(i(l))}console.log(this.getEndTips(a,this.getCurrentEndCompileTime())),console.log()}})}initProdHook(){let{compiler:e}=this,t;e.hooks.environment.intercept({name:Y,call:()=>{console.log(w.gray(`start build...`)),this.updateStartCompileTime()}}),e.hooks.done.intercept({name:Y,call:e=>{t=e.toJson({preset:`normal`,colors:!0,assetsSort:`size`})}}),e.cache.hooks.shutdown.intercept({name:Y,done:()=>{let{errorsCount:e=0,warningsCount:n=0}=t;console.log(),e>0?(console.log(this.getError(t)),console.log()):(n>0&&(console.log(this.getWarn(t)),console.log()),console.log(this.getTableInfo(t)),console.log()),console.log(this.getEndTips(t,this.getCurrentEndCompileTime()))}})}};const Z=`@rspack/ikaros-cdn-plugin`,ke=/:([a-z]+)/gi;var Ae=class{constructor(e){this.isDev=!1,this.options={prodUrl:`https://unpkg.com/:name@:version/:path`,devUrl:`:name/:path`,crossOrigin:!1,...e}}apply(e){this.compiler=e,this.isDev=e.options.mode===`development`,this.handleExternals(),e.hooks.compilation.tap(Z,e=>{T.HtmlRspackPlugin.getCompilationHooks(e).alterAssetTags.tapAsync(Z,(e,t)=>{try{this.injectResources(e),t(null,e)}catch(e){t(e)}})})}handleExternals(){let e=this.compiler.options.externals||{};this.options.modules.filter(e=>!e.cssOnly).forEach(t=>{e[t.name]=t.var||t.name}),this.compiler.options.externals=e}injectResources(e){let t=this.options.modules,n=[];t.forEach(e=>{this.getStyles(e).forEach(e=>{n.push({tagName:`link`,voidTag:!0,attributes:{rel:`stylesheet`,href:e,...this.options.crossOrigin&&{crossorigin:this.options.crossOrigin}}})})}),t.filter(e=>!e.cssOnly).forEach(e=>{this.getScripts(e).forEach(e=>{n.push({tagName:`script`,voidTag:!0,attributes:{src:e,...this.options.crossOrigin&&{crossorigin:this.options.crossOrigin}}})})}),e.assetTags&&(e.assetTags.styles.unshift(...n.filter(e=>e.tagName===`link`)),e.assetTags.scripts.unshift(...n.filter(e=>e.tagName===`script`)))}getStyles(e){let t=[...e.styles||[]];return e.style&&t.unshift(e.style),t.map(t=>this.generateUrl(e,t))}getScripts(e){let t=[...e.paths||[]];return e.path&&t.unshift(e.path),t.map(t=>this.generateUrl(e,t))}joinUrl(e,t){return e=e.replace(/\/+$/,``),t=t.replace(/^\/+/,``),`${e}/${t}`}generateUrl(e,t){let n=this.isDev?e.devUrl||this.options.devUrl:e.prodUrl||this.options.prodUrl;return n.match(ke)?n.replace(ke,(n,r)=>{switch(r){case`name`:return e.name;case`version`:return e.version||this.getModuleVersion(e.name);case`path`:return t;default:return n}}):this.joinUrl(n,t)}getModuleVersion(t){try{return e(b.join(process.cwd(),`node_modules`))(b.join(t,`package.json`)).version}catch{return console.warn(w.yellow(`[${Z}] 无法获取模块 "${t}" 的版本信息`)),`latest`}}},je=class{constructor(e){this.options=e}createSourceMapPlugin(){let{isDev:e,userConfig:t}=this.options;if(e)return new T.EvalSourceMapDevToolPlugin({columns:!1,module:!0});if(t?.build?.sourceMap??!1)return new T.SourceMapDevToolPlugin({test:[/.js/,/.mjs/],filename:`[file].map[query]`})}createCssExtractPlugin(){if(!this.options.isDev)return new T.CssExtractRspackPlugin({filename:this.joinAssetsDir(`assets/css/[contenthash].css`),ignoreOrder:!0})}createDoctorPlugin(){let{isDev:e,userConfig:t}=this.options;if(!(e||!t?.build?.outReport))return new se}createGzipPlugin(){let{isDev:e,userConfig:t}=this.options;if(!(e||!t?.build?.gzip))return new ce}createCdnPlugin(){let{cdnOptions:e}=this.options.userConfig??{};if(!(!e||g(e.modules)))return new Ae(e)}createModuleFederationPlugin(){let e=this.options.userConfig?.moduleFederation;if(e)return h(e)?e.map(e=>new le(e)):new le(e)}createDependencyCyclePlugin(){let{isDev:e,userConfig:t}=this.options;if(!(e||!t?.build?.dependencyCycleCheck))return new T.CircularDependencyRspackPlugin({exclude:/node_modules/,failOnError:!1})}joinAssetsDir(...e){return[this.options.assetsDir,...e].join(`/`).replace(/\/+/g,`/`)}};const Me=e=>{let{isVue:t,isReact:n}=e;return t?{noParse:/^(vue|vue-router|vuex|vuex-router-sync)$/,env:{__VUE_OPTIONS_API__:!0,__VUE_PROD_DEVTOOLS__:!1,__VUE_PROD_HYDRATION_MISMATCH_DETAILS__:!1}}:n?{noParse:e=>/(react|react-dom|react-is)\.production\.min\.js$/.test(e),env:{REACT_APP_ENABLE_DEVTOOLS:!1}}:{env:void 0,noParse:void 0}},Ne=e=>e===I.SERVER?{minimize:!1,removeAvailableModules:!1,removeEmptyChunks:!1,splitChunks:!1}:{minimize:!0,minimizer:[new T.LightningCssMinimizerRspackPlugin,new T.SwcJsMinimizerRspackPlugin],splitChunks:{chunks:`all`,minSize:3e4,minChunks:1,maxAsyncRequests:5,maxInitialRequests:3,cacheGroups:{vendor:{test:/[\\/]node_modules[\\/]/,name:`vendors`,priority:10,chunks:`all`},common:{name:`common`,minChunks:2,priority:5,reuseExistingChunk:!0}}}},Pe=e=>{if(e.command!==I.SERVER&&e.userConfig?.build?.cache)return{cache:!0,experiments:{cache:{type:`persistent`}}}},Fe=e=>{let{userConfig:t,isElectron:n,resolveContext:r}=e,i=t?.build?.outDirName;if(n){let e=t?.electron,n=r(`dist/electron/renderer`);return e?.build?.outDir?o(r(e.build.outDir),`renderer`):n}return m(i)?r(i):r(`dist`)},Ie=(e,t)=>[e,t].filter(Boolean).join(`/`).replace(/\/+/g,`/`),Le=e=>{let{command:t,mode:n,env:r,context:i,contextPkg:a,userConfig:s,pages:c,browserslist:l,base:u,port:d,isElectron:f,resolveContext:p}=e,m=t===I.SERVER,h=m?`development`:`production`,g=new K({env:h,mode:n}),_=new q({env:h,mode:n}),{entry:v,plugins:y}=new Ee({pages:c,enablePages:s?.enablePages}).create(),{env:b,noParse:x}=Me({isVue:e.isVue,isReact:e.isReact}),S=g.useDefaultResourceLoader().useDefaultScriptLoader(s?.experiments).useDefaultCssLoader(s?.css).add(s?.loaders).end(),C=s?.build?.assetsDir??``,w=new je({command:t,userConfig:s,isDev:m,assetsDir:C}),ee=_.useDefaultEnvPlugin({extEnv:{...s?.define},frameworkEnv:b,env:r}).useCopyPlugin().add(y).add(new Oe).add(w.createSourceMapPlugin()).add(w.createCssExtractPlugin()).add(w.createDoctorPlugin()).add(w.createGzipPlugin()).add(w.createCdnPlugin()).add(w.createModuleFederationPlugin()).add(w.createDependencyCyclePlugin()).add(s?.plugins).end();return{mode:h,context:i,entry:v,target:f?`electron-renderer`:[`web`,`es2015`,`browserslist:${l}`],resolve:{alias:{"@":p(`src`),...s?.resolve?.alias},extensions:s?.resolve?.extensions||V,modules:[`node_modules`,p(`node_modules`),U(`node_modules`)]},output:{clean:!0,path:Fe({userConfig:s,isElectron:f,resolveContext:p}),publicPath:f?`./`:u,filename:m?`[name].[contenthash:8].js`:Ie(C,`assets/js/[contenthash:8].js`),chunkFilename:m?`[name].[contenthash:8].chunk.js`:Ie(C,`assets/js/[contenthash:8].chunk.js`),chunkLoadingGlobal:`${a?.name||`ikaros`}_chunk`,pathinfo:!1},optimization:Ne(t),stats:`none`,watchOptions:{aggregateTimeout:500,ignored:/node_modules/},module:{rules:S,noParse:x},plugins:ee,devServer:{hot:!0,port:d,server:(()=>{let e=s?.server?.https;return e?e===!0?`https`:{type:`https`,options:e}:`http`})(),allowedHosts:`all`,proxy:s?.server?.proxy,historyApiFallback:{disableDotRule:!0,rewrites:[{from:/\.(js|css|json|png|jpe?g|gif|svg|ico|woff2?|eot|ttf|otf|mp4|webm|ogg|mp3|wav|flac|aac|map)(\?.*)?$/,to:e=>e.parsedUrl.pathname},{from:RegExp(`^${u}`),to:o(u,`index.html`)}]},headers:{"Access-Control-Allow-Origin":`*`},static:{directory:p(`public`),publicPath:u},client:{logging:`none`,overlay:{errors:!0,warnings:!1,runtimeErrors:!1},webSocketURL:`auto://0.0.0.0:${d}/ws`}},experiments:{css:!0},...Pe({command:t,userConfig:s})}},Re=e=>{let t=e===`mobile`,n=[`defaults`];return t?n.push(`IOS >= 16`,`Chrome >= 80`):n.push(`>0.2%`,`Chrome >= 90`,`Safari >= 16`,`last 2 versions`,`not dead`),n.join(`,`)},ze=(e,t)=>t?{index:{html:e(`src/renderer/index.html`),entry:e(`src/renderer/index`)}}:{index:{html:e(`index.html`),entry:e(`src/index`)}},Be=async e=>{let{command:t,resolveContext:n,getUserConfig:r,isElectron:i}=e,a=await r(),o=a?.build?.base??`/`;if(t===I.SERVER&&/^https?:/.test(o)){let e=w.cyan(`build.base`);throw Error(`本地开发时 ${e} 不应该为外部 Host!`)}let s=a?.target??`pc`,c=a?.pages??ze(n,!!i),l=a?.server?.port??await ue(`8080`),u=!1,d=!1;try{let[e,t]=await Promise.all([k(`react`),k(`vue`)]);u=t,d=e}catch{}return{userConfig:a,base:o,target:s,pages:c,port:l,browserslist:Re(s),isVue:u,isReact:d}},Ve=async e=>{let{command:t,options:n,env:r,context:i,contextPkg:a,userConfig:o,isElectron:s,resolveContext:c,loadViteAdapter:l}=e,u=await Be({command:t,resolveContext:c,getUserConfig:async()=>o,isElectron:s}),d=u.userConfig?.bundler??`rspack`;return{bundler:d,config:(()=>{switch(d){case`vite`:{let e=l?.();if(!e)throw Error(`bundler='vite' 需要安装可选依赖 @ikaros-cli/ikaros-bundler-vite`);return e.createWebViteConfig({command:t,mode:n.mode,env:r,context:i,userConfig:u.userConfig,pages:u.pages,base:u.base,port:u.port,isElectron:s,resolveContext:c})}case`rspack`:default:return Le({command:t,mode:n.mode,env:r,context:i,contextPkg:a,userConfig:u.userConfig,pages:u.pages,browserslist:u.browserslist,base:u.base,port:u.port,isElectron:s,isVue:u.isVue,isReact:u.isReact,resolveContext:c})}})(),pre:u}},He=()=>{let e=`@ikaros-cli/ikaros-bundler-vite`,t=[`你启用了 bundler='vite',但未安装可选依赖 ${e}。`,``,`请安装后重试:`,` pnpm add -D ${e}`];return Error(t.join(`
|
|
8
8
|
`))},Ue=()=>{let e=[`你启用了 bundler='vite',但当前 Node.js 版本过低。`,`当前版本:v${process.versions.node}`,`Vite 7 运行时通常需要 Node.js >= 22。`];return Error(e.join(`
|
|
9
9
|
`))},Q=e=>{let{loadContextModule:t}=e,n=Number(process.versions.node.split(`.`)[0]);if(Number.isFinite(n)&&n<22)throw Ue();try{let e=t(`@ikaros-cli/ikaros-bundler-vite`),n=e.default??e;if(typeof n?.createWebViteConfig!=`function`||typeof n?.runViteBuild!=`function`||typeof n?.startViteDevServer!=`function`)throw He();return n}catch(e){throw e instanceof Error,He()}},{error:We}=M();var Ge=class extends L{constructor(e){super(e),this.onBuildStatus=e.onBuildStatus}async dev(){let e=await this.prepare();if(e.bundler===`vite`){await e.vite.startViteDevServer(e.config,{port:this.port,onBuildStatus:this.onBuildStatus});return}await xe(e.config,{port:this.port,onBuildStatus:this.onBuildStatus})}async build(){let e=await this.prepare();if(e.bundler===`vite`){await e.vite.runViteBuild(e.config,{onBuildStatus:this.onBuildStatus});return}await z(e.config,{onBuildStatus:this.onBuildStatus})}async prepare(){try{let e=await Ve({command:this.command,options:this.options,env:this.env,context:this.context,contextPkg:this.contextPkg,userConfig:this.userConfig,isElectron:this.isElectron,resolveContext:this.resolveContext,loadViteAdapter:()=>this.viteAdapter??=Q({loadContextModule:this.loadContextModule.bind(this)})});return this.userConfig=e.pre.userConfig,this.port=e.pre.port,e.bundler===`vite`?{bundler:`vite`,config:e.config,vite:this.viteAdapter??=Q({loadContextModule:this.loadContextModule.bind(this)})}:{bundler:`rspack`,config:e.config}}catch(e){We({text:e instanceof Error?e.message:String(e)}),process.exit(0)}}getDevPort(){return this.port}};const Ke=()=>{let e=`@ikaros-cli/ikaros-platform-desktop-client`,t=[`你启用了 platform='desktopClient',但未安装可选依赖 ${e}。`,``,`请安装后重试:`,` pnpm add -D ${e}`];return Error(t.join(`
|
|
10
10
|
`))},qe=async()=>{try{let t=await import(l(e(o(process.cwd(),`./`)).resolve(`@ikaros-cli/ikaros-platform-desktop-client`)).href),n=t.default??t;if(typeof n?.startDesktopClientCompile!=`function`)throw Ke();return n}catch{throw Ke()}},$={WEB:`web`,DESKTOPCLIENT:`desktopClient`,ELECTRON:`desktopClient`},Je=[new t(`-m, --mode <name>`,`Environment variable`),new t(`-p, --platform <type>`,`build platform type`).default($.WEB).choices(Object.values($))],Ye=async e=>{try{switch(e.options.platform){case $.WEB:await Ge.create(e);return;case $.DESKTOPCLIENT:await(await qe()).startDesktopClientCompile(e);return;default:{let e=Object.values($).join(`,`);throw Error(`No corresponding compilation service was found, platform: ${e}`)}}}catch(e){let t=e instanceof Error?e.message:String(e);process.stderr.write(`${t}\n`),process.exit(1)}},Xe=e=>{let t=e.command(I.SERVER,{isDefault:!0}).description(`Start local develop serve`).action(async e=>{await Ye({command:I.SERVER,options:e})}),n=e.command(I.BUILD).description(`Start build`).action(async e=>{await Ye({command:I.BUILD,options:e})});for(let e of Je)t.addOption(e),n.addOption(e)},Ze=e=>e;if(Number(process.versions.node.split(`.`)[0])<22){let e=w.bgRed.white(` ERROR `);process.stderr.write(`${e} Node.js version must be greater than or equal to v22!\n\n`),process.exit(1)}n.version(D,`-v, --version`),Xe(n),n.parse();export{L as BaseCompileService,I as Command,K as CreateLoader,q as CreatePlugins,M as LoggerSystem,Ge as WebCompileService,Ze as defineConfig,V as extensions,Q as loadOptionalViteAdapter,Ve as prepareWebCompile,U as resolveCLI,z as runRspackBuild,Se as watchRspackBuild};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ikaros-cli/ikaros",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
"npm": ">=9.5.0"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@module-federation/enhanced": "^0.
|
|
46
|
-
"@rsdoctor/rspack-plugin": "^1.
|
|
45
|
+
"@module-federation/enhanced": "^0.22.0",
|
|
46
|
+
"@rsdoctor/rspack-plugin": "^1.4.0",
|
|
47
47
|
"@rspack/core": "^1.6.7",
|
|
48
|
-
"@rspack/dev-server": "^1.1.
|
|
48
|
+
"@rspack/dev-server": "^1.1.5",
|
|
49
49
|
"chalk": "^5.6.2",
|
|
50
50
|
"cli-cursor": "^5.0.0",
|
|
51
51
|
"commander": "^14.0.2",
|
|
@@ -55,22 +55,22 @@
|
|
|
55
55
|
"dotenv": "^17.2.3",
|
|
56
56
|
"easy-table": "^1.2.0",
|
|
57
57
|
"es-toolkit": "^1.43.0",
|
|
58
|
-
"fs-extra": "^11.3.
|
|
58
|
+
"fs-extra": "^11.3.3",
|
|
59
59
|
"glob": "^13.0.0",
|
|
60
60
|
"less-loader": "^12.3.0",
|
|
61
61
|
"listr2": "^9.0.5",
|
|
62
62
|
"ora": "^9.0.0",
|
|
63
|
-
"oxc-transform": "^0.
|
|
63
|
+
"oxc-transform": "^0.106.0",
|
|
64
64
|
"picocolors": "^1.1.1",
|
|
65
65
|
"pretty-bytes": "^7.1.0",
|
|
66
66
|
"sass-loader": "^16.0.6",
|
|
67
67
|
"stylus-loader": "^8.1.2",
|
|
68
68
|
"vue-style-loader": "^4.1.3",
|
|
69
69
|
"yaml": "^2.8.2",
|
|
70
|
-
"zod": "^4.
|
|
70
|
+
"zod": "^4.3.5"
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
73
|
"@types/fs-extra": "^11.0.4",
|
|
74
|
-
"vitest": "^
|
|
74
|
+
"vitest": "^4.0.16"
|
|
75
75
|
}
|
|
76
|
-
}
|
|
76
|
+
}
|