@epxing/cli 0.5.0-beta.10 → 0.5.0-beta.11

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/API.md CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  独立工程命令行工具,终端命令名为 epxing。/vite 提供产品构建插件,根入口不提供业务运行时。
4
4
 
5
- 本页对应包版本 `0.5.0-beta.10`。导出名、子路径和签名从当前源码、package.json 与类型声明生成。
5
+ 本页对应包版本 `0.5.0-beta.11`。导出名、子路径和签名从当前源码、package.json 与类型声明生成。
6
6
 
7
7
  ## 安装与使用
8
8
 
9
9
 
10
10
  ```sh
11
- npm install -g @epxing/cli@0.5.0-beta.10
11
+ npm install -g @epxing/cli@0.5.0-beta.11
12
12
  ```
13
13
 
14
14
 
package/README.md CHANGED
@@ -4,7 +4,9 @@
4
4
 
5
5
  独立的工程开发工具,包含交互菜单、开发服务、产品库构建、创建、Vue3 迁移、静态检查和升级技能安装。创建和升级默认使用 `@epxing/*` 独立包,版本留空时查询最新 `beta` 并固定到具体版本,没有 `beta` 时使用 `latest`;可用 `--packages-version` 指定版本或标签。CLI 使用自己的版本号。创建和升级会生成产品使用说明;`@epxing/cli/vite` 提供产品构建插件,不依赖聚合包中的构建工具。
6
6
 
7
- 本批测试版本:`@epxing/cli@0.5.0-beta.10`,平台包 `5.3.0-beta.5`,均使用 npm 公网 `beta` 标签。CLI 与平台独立版本,本次不升级平台包。完整流程见文档站“CLI 创建、升级与产品使用”;各包公开 API 随安装包的 `API.md` 提供。
7
+ 本批测试版本:`@epxing/cli@0.5.0-beta.11`,平台包 `5.3.0-beta.5`,均使用 npm 公网 `beta` 标签。CLI 与平台独立版本,本次不升级平台包。完整流程见文档站“CLI 创建、升级与产品使用”;各包公开 API 随安装包的 `API.md` 提供。
8
+
9
+ `0.5.0-beta.11` 将按需库的组件 CSS 放入对应 JS,模块加载完成前同步注入,共享样式去重;index.css 保留空文件兼容已登记 URL,整库兜底自带全部样式。可视化、设计器和预览组件写入预取排除清单,实际使用仍正常加载。新平台选择性预取普通组件;旧平台由新壳关闭后台预取。全量构建仍使用原有整体 CSS。Vite 深层动态导入仍引用的 CSS 文件继续保留并随组件按需加载。
8
10
 
9
11
  `0.5.0-beta.10` 关闭产品库构建的 public 目录复制,避免旧 cmaps 和 index.html 混入 lib。创建模板、已有库配置迁移及 CLI 库构建保持一致;应用构建和源 public 文件保留。动态或展开的库配置仍报告人工核对。修复直接执行 npm 库构建时异步懒加载插件进入自身嵌套构建的问题。
10
12
 
package/dist/lazy-lib.mjs CHANGED
@@ -1,28 +1,43 @@
1
- import h from"node:fs";import y from"node:path";import{build as B}from"epxing:project-vite";import j from"node:fs";import v from"node:path";import{parse as T,babelParse as U}from"epxing:project-sfc";function W(e){return j.readFileSync(e,"utf8").split(`\r
1
+ import h from"node:fs";import d from"node:path";import{build as J}from"epxing:project-vite";import O from"node:path";import{createHash as W}from"node:crypto";function K(e,r,t){let n=t==="es"?"import.meta.url":"((document.currentScript && document.currentScript.src) || document.baseURI)",o=W("sha256").update(e).digest("hex").slice(0,16);return`;(function () {
2
+ if (typeof document === 'undefined') return
3
+ var base = new URL(${JSON.stringify(r)}, ${n}).href
4
+ var id = 'epx-lib-css:' + base + ':${o}'
5
+ if (document.getElementById(id)) return
6
+ var style = document.createElement('style')
7
+ style.id = id
8
+ style.textContent = ${JSON.stringify(e)}.replace(/url\\(\\s*(?:"([^"]*)"|'([^']*)'|([^)]*))\\s*\\)/gi, function (match, double, single, raw) {
9
+ var value = (double || single || raw || '').trim()
10
+ if (!value || /^(?:[a-z][a-z\\d+.-]*:|\\/|#|var\\()/i.test(value)) return match
11
+ return 'url(' + JSON.stringify(new URL(value, base).href) + ')'
12
+ })
13
+ document.head.appendChild(style)
14
+ })()
15
+ `}function j(e,r,t=!1){let n=Object.values(e).filter(i=>i.type==="chunk"),o=Object.values(e).filter(i=>i.type==="asset"&&i.fileName.endsWith(".css")),s=new Set(o.filter(i=>n.some(l=>l.code.includes(O.posix.basename(i.fileName)))).map(i=>i.fileName)),u=new Set;for(let i of n){let l=t?o:o.filter(a=>i.viteMetadata?.importedCss?.has(a.fileName));for(let a of l){let m=typeof a.source=="string"?a.source:Buffer.from(a.source).toString("utf8"),b=O.posix.relative(O.posix.dirname(i.fileName),a.fileName);i.code+=`
16
+ `+K(m,b,r),u.add(a.fileName)}}for(let i of u)s.has(i)||delete e[i]}function z(e=!1){return{name:"epx-lazy-inline-css",generateBundle:{order:"post",handler(r,t){j(t,r.format,e)}}}}import N from"node:fs";import v from"node:path";import{parse as G,babelParse as q}from"epxing:project-sfc";function Z(e){return N.readFileSync(e,"utf8").split(`\r
2
17
  `).join(`
3
- `)}function G(e){let s=e.split(`\r
18
+ `)}function X(e){let r=e.split(`\r
4
19
  `).join(`
5
- `),t="";try{let{descriptor:r}=T(s);t=r.script&&r.script.content||r.scriptSetup&&r.scriptSetup.content||""}catch{return null}if(!t)return null;try{let i=U(t,{sourceType:"module",plugins:["jsx","typescript","decorators-legacy"]}).program.body,n=l=>{if(!l||l.type!=="ObjectExpression")return null;for(let u of l.properties){if(u.type!=="ObjectProperty"||u.computed)continue;if((u.key.type==="Identifier"?u.key.name:u.key.type==="StringLiteral"?u.key.value:null)==="name"&&u.value.type==="StringLiteral")return u.value.value}return null},a=i.find(l=>l.type==="ExportDefaultDeclaration");if(!a)return null;let o=n(a.declaration);if(o)return o;if(a.declaration.type==="Identifier"){let l=a.declaration.name;for(let u of i)if(u.type==="VariableDeclaration"){for(let m of u.declarations)if(m.id.type==="Identifier"&&m.id.name===l){let b=n(m.init);if(b)return b}}}if(a.declaration.type==="CallExpression")for(let l of a.declaration.arguments){let u=n(l);if(u)return u}return null}catch{return null}}function K(e){return e.replace(/(\.\/|\.vue|\/)/g,"")}function O(e,s){let t=v.resolve(e,s),r=[],i=n=>{let a=j.readdirSync(n,{withFileTypes:!0}).sort((o,l)=>o.name<l.name?-1:1);for(let o of a){let l=v.join(n,o.name);if(o.isDirectory())i(l);else if(o.name.endsWith(".vue")){let m="./"+v.relative(e,l).split(v.sep).join("/");r.push({globKey:m,file:l,key:G(W(l))||K(m)})}}};return j.existsSync(t)&&i(t),r.sort((n,a)=>n.globKey<a.globKey?-1:1)}function z(e){let s=new Map;for(let t of e){if(s.has(t.key))throw new Error(`[lazy-lib] \u7EC4\u4EF6\u6CE8\u518C\u540D\u51B2\u7A81\uFF1A'${t.key}' \u540C\u65F6\u6765\u81EA
6
- ${s.get(t.key)}
20
+ `),t="";try{let{descriptor:n}=G(r);t=n.script&&n.script.content||n.scriptSetup&&n.scriptSetup.content||""}catch{return null}if(!t)return null;try{let o=q(t,{sourceType:"module",plugins:["jsx","typescript","decorators-legacy"]}).program.body,s=l=>{if(!l||l.type!=="ObjectExpression")return null;for(let a of l.properties){if(a.type!=="ObjectProperty"||a.computed)continue;if((a.key.type==="Identifier"?a.key.name:a.key.type==="StringLiteral"?a.key.value:null)==="name"&&a.value.type==="StringLiteral")return a.value.value}return null},u=o.find(l=>l.type==="ExportDefaultDeclaration");if(!u)return null;let i=s(u.declaration);if(i)return i;if(u.declaration.type==="Identifier"){let l=u.declaration.name;for(let a of o)if(a.type==="VariableDeclaration"){for(let m of a.declarations)if(m.id.type==="Identifier"&&m.id.name===l){let b=s(m.init);if(b)return b}}}if(u.declaration.type==="CallExpression")for(let l of u.declaration.arguments){let a=s(l);if(a)return a}return null}catch{return null}}function H(e){return e.replace(/(\.\/|\.vue|\/)/g,"")}function L(e,r){let t=v.resolve(e,r),n=[],o=s=>{let u=N.readdirSync(s,{withFileTypes:!0}).sort((i,l)=>i.name<l.name?-1:1);for(let i of u){let l=v.join(s,i.name);if(i.isDirectory())o(l);else if(i.name.endsWith(".vue")){let m="./"+v.relative(e,l).split(v.sep).join("/");n.push({globKey:m,file:l,key:X(Z(l))||H(m)})}}};return N.existsSync(t)&&o(t),n.sort((s,u)=>s.globKey<u.globKey?-1:1)}function E(e){let r=new Map;for(let t of e){if(r.has(t.key))throw new Error(`[lazy-lib] \u7EC4\u4EF6\u6CE8\u518C\u540D\u51B2\u7A81\uFF1A'${t.key}' \u540C\u65F6\u6765\u81EA
21
+ ${r.get(t.key)}
7
22
  ${t.file}
8
- \u5355\u4F53\u5F62\u6001\u4E0B\u662F\u540E\u8005\u9759\u9ED8\u8986\u76D6\u524D\u8005\uFF1B\u6309\u9700\u5F62\u6001\u4E0B\u4E24\u4E2A chunk \u62A2\u540C\u4E00\u4E2A\u540D\u5B57\uFF0C\u5FC5\u987B\u5148\u6539\u6389\u5176\u4E2D\u4E00\u4E2A\u7EC4\u4EF6\u7684 name\uFF08\u6216\u6587\u4EF6\u8DEF\u5F84\uFF09\u3002`);s.set(t.key,t.file)}return e}var R=[{test:e=>e==="vue",global:"window.frame && window.frame.Vue"},{test:e=>e==="vuex",global:"window.frame && window.frame.vuex"},{test:e=>e==="vue-router",global:"window.frame && window.frame.router"},{test:e=>e==="epx-frame"||e.startsWith("epx-frame/"),global:"window.epxFrame"}],L=/^[A-Za-z_$][\w$]*$/,q=(e,s)=>{if(!s)return null;let t=typeof s=="function"?s(e):s[e];return typeof t=="string"&&t?t:null};function Z(e,s){let t=R.find(i=>i.test(e));if(t)return t.global;let r=q(e,s);if(r)return`window.${r}`;throw new Error(`[lazy-lib] external '${e}' \u6CA1\u6709\u5BF9\u5E94\u7684\u8FD0\u884C\u65F6\u5168\u5C40\u6620\u5C04\u3002
23
+ \u5355\u4F53\u5F62\u6001\u4E0B\u662F\u540E\u8005\u9759\u9ED8\u8986\u76D6\u524D\u8005\uFF1B\u6309\u9700\u5F62\u6001\u4E0B\u4E24\u4E2A chunk \u62A2\u540C\u4E00\u4E2A\u540D\u5B57\uFF0C\u5FC5\u987B\u5148\u6539\u6389\u5176\u4E2D\u4E00\u4E2A\u7EC4\u4EF6\u7684 name\uFF08\u6216\u6587\u4EF6\u8DEF\u5F84\uFF09\u3002`);r.set(t.key,t.file)}return e}var Y=[{test:e=>e==="vue",global:"window.frame && window.frame.Vue"},{test:e=>e==="vuex",global:"window.frame && window.frame.vuex"},{test:e=>e==="vue-router",global:"window.frame && window.frame.router"},{test:e=>e==="epx-frame"||e.startsWith("epx-frame/"),global:"window.epxFrame"}],F=/^[A-Za-z_$][\w$]*$/,Q=(e,r)=>{if(!r)return null;let t=typeof r=="function"?r(e):r[e];return typeof t=="string"&&t?t:null};function ee(e,r){let t=Y.find(o=>o.test(e));if(t)return t.global;let n=Q(e,r);if(n)return`window.${n}`;throw new Error(`[lazy-lib] external '${e}' \u6CA1\u6709\u5BF9\u5E94\u7684\u8FD0\u884C\u65F6\u5168\u5C40\u6620\u5C04\u3002
9
24
  ESM chunk \u91CC\u7684\u88F8\u8BF4\u660E\u7B26\u6D4F\u89C8\u5668\u89E3\u6790\u4E0D\u4E86\uFF0C\u5FC5\u987B\u7ECF shim \u6865\u5230 window \u4E0A\u7684\u5168\u5C40\u3002
10
25
  \u5E73\u53F0\u5185\u7F6E\u6620\u5C04\uFF1Avue \u2192 window.frame.Vue\uFF1Bvuex \u2192 window.frame.vuex\uFF1B
11
26
  vue-router \u2192 window.frame.router\uFF1Bepx-frame\uFF08\u542B\u5B50\u8DEF\u5F84\uFF09\u2192 window.epxFrame\u3002
12
27
  \u4E09\u6761\u51FA\u8DEF\uFF1A
13
28
  \u2460 \u5B83\u7531**\u4EA7\u54C1\u9879\u76EE**\u77E5\u9053\u5168\u5C40\u540D \u2192 \u5728 vite.config.mjs \u7684 output.globals \u91CC\u7ED9 '${e}' \u914D\u4E0A\uFF08\u63A8\u8350\uFF09\uFF1B
14
29
  \u2461 \u5B83\u7531**\u5E73\u53F0**\u63D0\u4F9B \u2192 \u53BB build/lazy-lib/gen-shims.mjs \u7684 GLOBALS \u8865\u4E00\u6761\u6620\u5C04\uFF1B
15
- \u2462 \u5B83\u4E0D\u8BE5\u88AB external\uFF08\u7EC4\u4EF6\u771F\u7684\u9700\u8981\u628A\u5B83\u6253\u8FDB\u4EA7\u7269\uFF09\u2192 \u4ECE external \u5217\u8868\u91CC\u53BB\u6389\u5B83\u3002`)}function S(e){return"shims/"+e.replace(/[^\w.-]/g,"_")+".js"}function D(e){let s=new Map;for(let t of e){let r=S(t);if(s.has(r)&&s.get(r)!==t)throw new Error(`[lazy-lib] shim \u6587\u4EF6\u540D\u51B2\u7A81\uFF1A'${t}' \u548C '${s.get(r)}' \u90FD\u751F\u6210 '${r}'\u3002
30
+ \u2462 \u5B83\u4E0D\u8BE5\u88AB external\uFF08\u7EC4\u4EF6\u771F\u7684\u9700\u8981\u628A\u5B83\u6253\u8FDB\u4EA7\u7269\uFF09\u2192 \u4ECE external \u5217\u8868\u91CC\u53BB\u6389\u5B83\u3002`)}function S(e){return"shims/"+e.replace(/[^\w.-]/g,"_")+".js"}function D(e){let r=new Map;for(let t of e){let n=S(t);if(r.has(n)&&r.get(n)!==t)throw new Error(`[lazy-lib] shim \u6587\u4EF6\u540D\u51B2\u7A81\uFF1A'${t}' \u548C '${r.get(n)}' \u90FD\u751F\u6210 '${n}'\u3002
16
31
  \u5F53\u524D\u7F16\u7801\u65B9\u6848\uFF08/ \u548C\u975E\u6CD5\u5B57\u7B26\u66FF\u6362\u4E3A _\uFF09\u5728 GLOBALS \u7684\u5C01\u95ED\u96C6\u5185\u662F\u5B89\u5168\u7684\u3002
17
- \u5C06\u6765\u82E5\u771F\u9700\u8981\u652F\u6301\u4F1A\u78B0\u649E\u7684\u8BF4\u660E\u7B26\uFF0C\u518D\u6362\u7F16\u7801\u65B9\u6848\uFF08\u5982 hash \u540E\u7F00\uFF09\u3002`);s.set(r,t)}}function F(e,s,t){let r=Z(e,t),i=[...s],n=i.filter(o=>o!=="default"&&L.test(o)).sort();for(let o of i)if(o!=="default"&&!L.test(o))throw new Error(`[lazy-lib] \u65E0\u6CD5\u4E3A external '${e}' \u751F\u6210 shim\uFF1Aimport binding '${o}' \u4E0D\u662F\u5408\u6CD5 JS \u6807\u8BC6\u7B26\u3002
32
+ \u5C06\u6765\u82E5\u771F\u9700\u8981\u652F\u6301\u4F1A\u78B0\u649E\u7684\u8BF4\u660E\u7B26\uFF0C\u518D\u6362\u7F16\u7801\u65B9\u6848\uFF08\u5982 hash \u540E\u7F00\uFF09\u3002`);r.set(n,t)}}function I(e,r,t){let n=ee(e,t),o=[...r],s=o.filter(i=>i!=="default"&&F.test(i)).sort();for(let i of o)if(i!=="default"&&!F.test(i))throw new Error(`[lazy-lib] \u65E0\u6CD5\u4E3A external '${e}' \u751F\u6210 shim\uFF1Aimport binding '${i}' \u4E0D\u662F\u5408\u6CD5 JS \u6807\u8BC6\u7B26\u3002
18
33
  \u539F\u56E0\uFF1A'*' \u6765\u81EA import * as ns from '...' \u7C7B\u547D\u540D\u7A7A\u95F4\u5BFC\u5165\uFF1Bshim \u65E0\u6CD5\u9759\u6001\u679A\u4E3E\u4F7F\u7528\u65B9\u4F1A\u8BBF\u95EE\u54EA\u4E9B\u540D\u5B57\u3002
19
- \u6539\u6CD5\uFF1A\u6539\u7528\u5177\u540D\u5BFC\u5165\uFF0C\u5982 import { someExport } from ... \u800C\u975E import * as ns from ...`);return[`// \u6784\u5EFA\u671F\u751F\u6210\uFF08epx-frame lazy-lib\uFF09\uFF1A\u8FD0\u884C\u65F6\u4ECE ${r} \u53D6\u5E73\u53F0\u5355\u4F8B\uFF0C\u52FF\u624B\u6539\u3002`,`const S = ${r}`,...n.map(o=>`export const ${o} = S[${JSON.stringify(o)}]`),"export default (S && S.default) || S"].join(`
34
+ \u6539\u6CD5\uFF1A\u6539\u7528\u5177\u540D\u5BFC\u5165\uFF0C\u5982 import { someExport } from ... \u800C\u975E import * as ns from ...`);return[`// \u6784\u5EFA\u671F\u751F\u6210\uFF08epx-frame lazy-lib\uFF09\uFF1A\u8FD0\u884C\u65F6\u4ECE ${n} \u53D6\u5E73\u53F0\u5355\u4F8B\uFF0C\u52FF\u624B\u6539\u3002`,`const S = ${n}`,...s.map(i=>`export const ${i} = S[${JSON.stringify(i)}]`),"export default (S && S.default) || S"].join(`
20
35
  `)+`
21
- `}function N(e){let s=new Map;for(let t in e){let r=e[t];if(r.type==="chunk")for(let i in r.importedBindings||{}){s.has(i)||s.set(i,new Set);for(let n of r.importedBindings[i])s.get(i).add(n)}}return s}import k from"node:path";var X=(e,s)=>{let t=k.resolve(e),r=k.resolve(s);return t===r||t.startsWith(r+k.sep)||t.startsWith(r+"/")},E=e=>k.resolve(String(e).split("?")[0]);function I(e,s,t,r){let i=new Set((r||[]).map(E)),n=[...e()].filter(d=>X(d,t)),a=new Set(n),o=new Map,l=[],u=[],m=d=>{let g=new Set;for(let f of d){let c=E(f);i.has(c)&&g.add(c)}return g.size},b=d=>{let g=o.get(d)||0;if(g===2)return;if(g===1){let c=[...l.slice(l.indexOf(d)),d];m(c)>=2&&u.push(c);return}o.set(d,1),l.push(d);let f=s(d)||{};for(let c of f.importedIds||[])a.has(c)&&b(c);l.pop(),o.set(d,2)};for(let d of n)b(d);return u}var $="\0epx-lazy-glob",A=/import\.meta\.glob\(\s*(['"])([^'"]+)\1\s*,\s*\{\s*(?:import\s*:\s*['"]default['"]\s*,\s*)?eager\s*:\s*true\s*(?:,\s*import\s*:\s*['"]default['"]\s*)?,?\s*\}\s*\)/;async function M(e){let s=(await Promise.all(e)).flat(1/0);return s.some(t=>t&&typeof t.then=="function")?M(s):s.filter(t=>t&&t.name!=="epx-lazy-lib")}function Y(e={}){let{enabled:s=!1,glob:t,eager:r=[],pkgName:i}=e,n=null,a=null,o=[],l=new Set,u="",m="",b="",d="",g=[];return{name:"epx-lazy-lib",apply:"build",enforce:"pre",config(f){return s?(g=(Array.isArray(f.plugins)?f.plugins.flat(1/0):[]).filter(c=>c&&c.name!=="epx-lazy-lib"),{build:{emptyOutDir:!1}}):null},configResolved(f){n=f,m=y.resolve(f.root,f.build.outDir);let c=f.build.lib&&f.build.lib.entry;b=Array.isArray(c)?c[0]:typeof c=="object"?Object.values(c)[0]:c,u=y.dirname(b),d=i||y.basename(f.root)},async buildStart(){if(!s)return;t||this.error("[lazy-lib] \u7F3A\u5C11 glob \u9009\u9879\uFF08\u5F62\u5982 './<\u4EA7\u54C1\u540D>/**/*.vue'\uFF09"),g=await M(g);let f=H(n.root,m);f&&this.error(f);let c=t.replace(/^\.\//,"").split("/")[0];o=z(O(u,c)),o.length||this.error(`[lazy-lib] \u6309 glob \u4E00\u4E2A .vue \u90FD\u6CA1\u626B\u5230\uFF0C\u65E0\u6CD5\u6309\u9700\u62C6\u5305\u3002
36
+ `}function A(e){let r=new Map;for(let t in e){let n=e[t];if(n.type==="chunk")for(let o in n.importedBindings||{}){r.has(o)||r.set(o,new Set);for(let s of n.importedBindings[o])r.get(o).add(s)}}return r}import k from"node:path";var te=(e,r)=>{let t=k.resolve(e),n=k.resolve(r);return t===n||t.startsWith(n+k.sep)||t.startsWith(n+"/")},C=e=>k.resolve(String(e).split("?")[0]);function B(e,r,t,n){let o=new Set((n||[]).map(C)),s=[...e()].filter(y=>te(y,t)),u=new Set(s),i=new Map,l=[],a=[],m=y=>{let g=new Set;for(let f of y){let c=C(f);o.has(c)&&g.add(c)}return g.size},b=y=>{let g=i.get(y)||0;if(g===2)return;if(g===1){let c=[...l.slice(l.indexOf(y)),y];m(c)>=2&&a.push(c);return}i.set(y,1),l.push(y);let f=r(y)||{};for(let c of f.importedIds||[])u.has(c)&&b(c);l.pop(),i.set(y,2)};for(let y of s)b(y);return a}var $="\0epx-lazy-glob",P=/import\.meta\.glob\(\s*(['"])([^'"]+)\1\s*,\s*\{\s*(?:import\s*:\s*['"]default['"]\s*,\s*)?eager\s*:\s*true\s*(?:,\s*import\s*:\s*['"]default['"]\s*)?,?\s*\}\s*\)/;function M(e){return/(?:^|[/_-])(?:visual|previews?|page-designer|designer)(?:[/_.-]|$)/i.test(e.globKey)||/(?:^|[-_])(?:visual|preview)(?:[-_]|$)/i.test(e.key)||/(?:Visual|Preview)(?:[A-Z0-9_-]|$)/.test(e.key)}async function V(e){let r=(await Promise.all(e)).flat(1/0);return r.some(t=>t&&typeof t.then=="function")?V(r):r.filter(t=>t&&t.name!=="epx-lazy-lib")}function ne(e={}){let{enabled:r=!1,glob:t,eager:n=[],pkgName:o}=e,s=null,u=null,i=[],l=new Set,a="",m="",b="",y="",g=[];return{name:"epx-lazy-lib",apply:"build",enforce:"pre",config(f){return r?(g=(Array.isArray(f.plugins)?f.plugins.flat(1/0):[]).filter(c=>c&&c.name!=="epx-lazy-lib"),{build:{emptyOutDir:!1}}):null},configResolved(f){s=f,m=d.resolve(f.root,f.build.outDir);let c=f.build.lib&&f.build.lib.entry;b=Array.isArray(c)?c[0]:typeof c=="object"?Object.values(c)[0]:c,a=d.dirname(b),y=o||d.basename(f.root)},async buildStart(){if(!r)return;t||this.error("[lazy-lib] \u7F3A\u5C11 glob \u9009\u9879\uFF08\u5F62\u5982 './<\u4EA7\u54C1\u540D>/**/*.vue'\uFF09"),g=await V(g);let f=se(s.root,m);f&&this.error(f);let c=t.replace(/^\.\//,"").split("/")[0];i=E(L(a,c)),i.length||this.error(`[lazy-lib] \u6309 glob \u4E00\u4E2A .vue \u90FD\u6CA1\u626B\u5230\uFF0C\u65E0\u6CD5\u6309\u9700\u62C6\u5305\u3002
22
37
  glob \u9009\u9879\uFF1A${t}
23
- \u5B9E\u9645\u626B\u63CF\u76EE\u5F55\uFF1A${y.join(u,c)}\uFF08= \u5165\u53E3\u6240\u5728\u76EE\u5F55 ${u} + glob \u7B2C\u4E00\u6BB5 ${c}\uFF09
38
+ \u5B9E\u9645\u626B\u63CF\u76EE\u5F55\uFF1A${d.join(a,c)}\uFF08= \u5165\u53E3\u6240\u5728\u76EE\u5F55 ${a} + glob \u7B2C\u4E00\u6BB5 ${c}\uFF09
24
39
  \u6700\u53EF\u80FD\u7684\u539F\u56E0\uFF1Aglob \u662F\u76F8\u5BF9**\u5165\u53E3\u6587\u4EF6\u6240\u5728\u76EE\u5F55**\u5199\u7684\uFF0C\u522B\u6309\u4ED3\u5E93\u6839\u591A\u5199\u4E00\u5C42 \`src/\`\u2014\u2014
25
- \u5165\u53E3\u662F src/index.js \u65F6\u5E94\u5199 './<\u4EA7\u54C1\u540D>/**/*.vue'\uFF0C\u4E0D\u662F './src/<\u4EA7\u54C1\u540D>/**/*.vue'\u3002`),l=new Set([...r,...ee(b,u,o)]),h.rmSync(m,{recursive:!0,force:!0}),h.mkdirSync(m,{recursive:!0});let x=o.filter(p=>!l.has(p.key));a=await ne(n,g,x,m,u,o)},resolveId(f){return f===$?$:null},load(f){return f!==$?null:se({pkgName:d,entries:o,eagerKeys:l,manifest:a})},transform(f,c){if(!s||y.resolve(c.split("?")[0])!==y.resolve(b))return null;let x=A.exec(f);return x||this.error(`[lazy-lib] \u5165\u53E3\u91CC\u6CA1\u627E\u5230\u671F\u671B\u5F62\u6001\u7684 import.meta.glob\u3002
40
+ \u5165\u53E3\u662F src/index.js \u65F6\u5E94\u5199 './<\u4EA7\u54C1\u540D>/**/*.vue'\uFF0C\u4E0D\u662F './src/<\u4EA7\u54C1\u540D>/**/*.vue'\u3002`),l=new Set([...n,...oe(b,a,i)]),h.rmSync(m,{recursive:!0,force:!0}),h.mkdirSync(m,{recursive:!0});let x=i.filter(p=>!l.has(p.key));u=await ae(s,g,x,m,a,i)},resolveId(f){return f===$?$:null},load(f){return f!==$?null:ce({pkgName:y,entries:i,eagerKeys:l,manifest:u})},transform(f,c){if(!r||d.resolve(c.split("?")[0])!==d.resolve(b))return null;let x=P.exec(f);return x||this.error(`[lazy-lib] \u5165\u53E3\u91CC\u6CA1\u627E\u5230\u671F\u671B\u5F62\u6001\u7684 import.meta.glob\u3002
26
41
  \u671F\u671B\uFF1Aconst files = import.meta.glob('./<\u4EA7\u54C1\u540D>/**/*.vue', { eager: true })
27
42
  \u6587\u4EF6\uFF1A${b}
28
43
  \uFF08\u4E0D\u505A\u9759\u9ED8\u964D\u7EA7\uFF1A\u90A3\u4F1A\u6084\u6084\u6253\u51FA\u4E00\u4E2A\u5355\u4F53\uFF0C\u800C\u4F60\u4EE5\u4E3A\u81EA\u5DF1\u5F00\u4E86\u6309\u9700\u3002\uFF09`),x[2]!==t&&this.error(`[lazy-lib] \u63D2\u4EF6\u7684 glob \u9009\u9879\u4E0E\u5165\u53E3\u91CC import.meta.glob \u7684\u5B57\u9762\u91CF\u4E0D\u4E00\u81F4\uFF0C\u4E24\u8FB9\u5FC5\u987B\u9010\u5B57\u76F8\u540C\u3002
@@ -30,25 +45,25 @@ import h from"node:fs";import y from"node:path";import{build as B}from"epxing:pr
30
45
  \u5165\u53E3\u5B57\u9762\u91CF\uFF1A${x[2]}
31
46
  \u6587\u4EF6\uFF1A${b}
32
47
  \uFF08\u4E0D\u4E00\u81F4\u65F6\u58F3\u7684\u952E\u96C6\u4F1A\u4E0E\u6574\u4F53\u5355\u4F53\u5206\u53C9\uFF0C\u964D\u7EA7\u515C\u5E95\u4F1A\u627E\u4E0D\u5230\u7EC4\u4EF6\u3002\uFF09`),{code:`import __epxLazyGlob from ${JSON.stringify($)}
33
- `+f.replace(A,/\bimport\s*:/.test(x[0])?"Object.fromEntries(Object.entries(__epxLazyGlob).map(([key, value]) => [key, value.default]))":"__epxLazyGlob"),map:null}},async closeBundle(){if(!s||!a)return;let f={};for(let c of o)f[c.key]=l.has(c.key)?null:a[c.key]||null;h.writeFileSync(y.join(m,"index.manifest.json"),JSON.stringify({v:1,pkgName:d,components:f,eager:[...l].sort()},null,2)+`
34
- `),te(m),P(m,n.build.copyPublicDir===!1?"":n.publicDir||""),await re(n,g,b,m,d),J(m,"index.deps.json"),Q(m,n.build.assetsDir)}}}function H(e,s){let t=y.resolve(e),r=y.resolve(s);return r===t||!r.startsWith(t+y.sep)?`[lazy-lib] build.outDir \u5FC5\u987B\u662F\u9879\u76EE\u6839**\u4E4B\u5185**\u7684\u5B50\u76EE\u5F55\uFF0C\u4E14\u4E0D\u80FD\u5C31\u662F\u9879\u76EE\u6839\u672C\u8EAB\u3002
48
+ `+f.replace(P,/\bimport\s*:/.test(x[0])?"Object.fromEntries(Object.entries(__epxLazyGlob).map(([key, value]) => [key, value.default]))":"__epxLazyGlob"),map:null}},async closeBundle(){if(!r||!u)return;let f={};for(let c of i)f[c.key]=l.has(c.key)?null:u[c.key]||null;h.writeFileSync(d.join(m,"index.manifest.json"),JSON.stringify({v:1,pkgName:y,components:f,eager:[...l].sort(),css:"inline",prefetchExclude:i.filter(M).map(c=>c.key)},null,2)+`
49
+ `),le(m),await ue(s,g,b,m,y),h.existsSync(d.join(m,"index.css"))||h.writeFileSync(d.join(m,"index.css"),""),T(m,"index.deps.json"),ie(m,s.build.assetsDir)},generateBundle:{order:"post",handler(f,c){r&&j(c,f.format,!0)}}}}function se(e,r){let t=d.resolve(e),n=d.resolve(r);return n===t||!n.startsWith(t+d.sep)?`[lazy-lib] build.outDir \u5FC5\u987B\u662F\u9879\u76EE\u6839**\u4E4B\u5185**\u7684\u5B50\u76EE\u5F55\uFF0C\u4E14\u4E0D\u80FD\u5C31\u662F\u9879\u76EE\u6839\u672C\u8EAB\u3002
35
50
  \u9879\u76EE\u6839\uFF1A${t}
36
- outDir\uFF1A${r}
51
+ outDir\uFF1A${n}
37
52
  \u539F\u56E0\uFF1A\u6309\u9700\u62C6\u5305\u7684\u4E09\u8D9F\u4EA7\u7269\u8981\u843D\u8FDB\u540C\u4E00\u4E2A\u76EE\u5F55\uFF0C\u672C\u63D2\u4EF6\u4F1A\u5728\u6784\u5EFA\u5F00\u59CB\u65F6\u628A outDir \u6574\u4E2A\u5220\u6389\u91CD\u5EFA
38
53
  \uFF08\u9012\u5F52\u3001\u5F3A\u5236\uFF09\uFF0C\u8FD9\u4E00\u6B65\u7ED5\u5F00\u4E86 vite \u81EA\u5DF1\u7684 emptyOutDir \u4FDD\u62A4\u3002outDir \u89E3\u6790\u6210\u9879\u76EE\u6839\u65F6\uFF0C
39
- \u8FD9\u4E00\u5220\u4F1A\u628A\u4EA7\u54C1\u7684\u6E90\u7801\u4E00\u8D77\u5220\u6389\u3002\u6539\u6CD5\uFF1A\u7ED9 build.outDir \u4E00\u4E2A\u771F\u6B63\u7684\u5B50\u76EE\u5F55\uFF0C\u5982 'lib'\u3002`:null}function P(e,s,t=""){for(let r of h.readdirSync(e,{withFileTypes:!0})){let i=y.join(e,r.name),n=t?t+"/"+r.name:r.name;if(r.isDirectory())P(i,s,n);else if(r.name.endsWith(".css")){if(s&&h.existsSync(y.join(s,n)))continue;h.rmSync(i,{force:!0})}}}function Q(e,s){let t=y.join(e,s||"assets");if(!h.existsSync(t))return[];let r=h.readdirSync(t,{withFileTypes:!0}).filter(n=>n.isFile()).map(n=>n.name);if(!r.length){try{h.rmdirSync(t)}catch{}return[]}let i=s||"assets";return console.warn(["",`[lazy-lib] \u26A0\uFE0F \u4EA7\u51FA\u4E86 ${r.length} \u4E2A\u6587\u4EF6\u578B\u8D44\u6E90\u5230 ${i}/\uFF1A`,...r.map(n=>" "+n),` \u8FDC\u7A0B\u5E93\u5F62\u6001\u4E0B\u5B83\u4EEC\u4F1A\u88AB\u5F15\u7528\u4E3A**\u7EDD\u5BF9\u8DEF\u5F84**\uFF08/${i}/xxx\uFF09\uFF0C`," \u89E3\u6790\u5230\u5E73\u53F0\u9875\u9762\u7684 origin \u6839\u76EE\u5F55 \u2192 \u8FD0\u884C\u65F6 404\uFF0C\u6784\u5EFA\u671F\u770B\u4E0D\u51FA\u6765\u3002"," \u4FEE\u6CD5\uFF1A\u628A build.assetsInlineLimit \u8C03\u5927\u5230\u8986\u76D6\u5B83\u4EEC\uFF08\u4EA7\u54C1\u9879\u76EE\u666E\u904D\u8BBE 50*1024\uFF09\uFF0C"," \u6216\u628A\u8D85\u5927\u8D44\u6E90\u5355\u72EC\u4F20\u6587\u4EF6\u670D\u52A1\u5668\u3001\u4EE3\u7801\u91CC\u5199\u5B8C\u6574 URL\u3002",""].join(`
40
- `)),r}var C=e=>({assetsInlineLimit:e.assetsInlineLimit,assetsDir:e.assetsDir,target:e.target,cssTarget:e.cssTarget,sourcemap:e.sourcemap,minify:e.minify});function J(e,s,t=""){for(let r of h.readdirSync(e,{withFileTypes:!0})){let i=y.join(e,r.name),n=t?t+"/"+r.name:r.name;r.isDirectory()?J(i,s,n):r.name.endsWith(".deps.json")&&n!==s&&h.rmSync(i,{force:!0})}}function ee(e,s,t){let r=h.readFileSync(e,"utf8").split(`\r
54
+ \u8FD9\u4E00\u5220\u4F1A\u628A\u4EA7\u54C1\u7684\u6E90\u7801\u4E00\u8D77\u5220\u6389\u3002\u6539\u6CD5\uFF1A\u7ED9 build.outDir \u4E00\u4E2A\u771F\u6B63\u7684\u5B50\u76EE\u5F55\uFF0C\u5982 'lib'\u3002`:null}function re(e,r,t=""){for(let n of h.readdirSync(e,{withFileTypes:!0})){let o=d.join(e,n.name),s=t?t+"/"+n.name:n.name;if(n.isDirectory())re(o,r,s);else if(n.name.endsWith(".css")){if(r&&h.existsSync(d.join(r,s)))continue;h.rmSync(o,{force:!0})}}}function ie(e,r){let t=d.join(e,r||"assets");if(!h.existsSync(t))return[];let n=h.readdirSync(t,{withFileTypes:!0}).filter(s=>s.isFile()).map(s=>s.name);if(!n.length){try{h.rmdirSync(t)}catch{}return[]}let o=r||"assets";return console.warn(["",`[lazy-lib] \u26A0\uFE0F \u4EA7\u51FA\u4E86 ${n.length} \u4E2A\u6587\u4EF6\u578B\u8D44\u6E90\u5230 ${o}/\uFF1A`,...n.map(s=>" "+s)," \u8FD9\u4E9B\u8D44\u6E90\u4F7F\u7528\u5E93\u5185\u76F8\u5BF9\u8DEF\u5F84\uFF0C\u90E8\u7F72\u65F6\u987B\u4E00\u5E76\u4E0A\u4F20\uFF0C\u5426\u5219\u8FD0\u884C\u65F6\u4F1A 404\u3002"," \u5982\u9700\u51CF\u5C11\u72EC\u7ACB\u8D44\u6E90\u8BF7\u6C42\uFF0C\u53EF\u8C03\u6574 build.assetsInlineLimit\uFF0C\u6216\u4F7F\u7528\u6587\u4EF6\u670D\u52A1\u5668\u5B8C\u6574 URL\u3002",""].join(`
55
+ `)),n}var U=e=>({assetsInlineLimit:e.assetsInlineLimit,assetsDir:e.assetsDir,target:e.target,cssTarget:e.cssTarget,sourcemap:e.sourcemap,minify:e.minify});function T(e,r,t=""){for(let n of h.readdirSync(e,{withFileTypes:!0})){let o=d.join(e,n.name),s=t?t+"/"+n.name:n.name;n.isDirectory()?T(o,r,s):n.name.endsWith(".deps.json")&&s!==r&&h.rmSync(o,{force:!0})}}function oe(e,r,t){let n=h.readFileSync(e,"utf8").split(`\r
41
56
  `).join(`
42
- `),i=[],n=/^\s*import\s+\w+\s+from\s+['"](\.[^'"]+\.vue)['"]/gm,a;for(;a=n.exec(r);){let o=y.resolve(y.dirname(e),a[1]),l=t.find(u=>y.resolve(u.file)===o);l&&i.push(l.key)}return i}function te(e){let s=y.join(e,"index.deps.json"),t=y.join(e,"index.js");if(!h.existsSync(s)||!h.existsSync(t))return;let r=[],i=!1;try{let a=JSON.parse(h.readFileSync(s,"utf8"));r=Array.isArray(a.components)?a.components:[],i=!!a.all}catch{return}let n=`
43
- /*__EPX_FRAME_DEPS__${JSON.stringify(r)}__*/
44
- `+(i?`/*__EPX_FRAME_DEPS_ALL__*/
45
- `:"");h.appendFileSync(t,n)}async function ne(e,s,t,r,i,n){let a={};for(let p of t)a[p.key]=p.file;let o=new Set,l=(n||t).map(p=>p.file),u=await B({root:e.root,logLevel:"silent",configFile:!1,plugins:[...s,{name:"epx-lazy-lib-cycle-guard",buildEnd(){let p=I(()=>this.getModuleIds(),_=>this.getModuleInfo(_),i,l);p.length&&this.error(`[lazy-lib] \u5165\u53E3\u7EC4\u4EF6\u4E4B\u95F4\u5B58\u5728\u5FAA\u73AF\u4F9D\u8D56\uFF0C\u6309\u9700\u62C6\u5305\u4F1A\u5728\u8FD0\u884C\u65F6\u89E6\u53D1 TDZ\uFF08Cannot access ... before initialization\uFF09\u5E76\u767D\u5C4F\uFF1A
57
+ `),o=[],s=/^\s*import\s+\w+\s+from\s+['"](\.[^'"]+\.vue)['"]/gm,u;for(;u=s.exec(n);){let i=d.resolve(d.dirname(e),u[1]),l=t.find(a=>d.resolve(a.file)===i);l&&o.push(l.key)}return o}function le(e){let r=d.join(e,"index.deps.json"),t=d.join(e,"index.js");if(!h.existsSync(r)||!h.existsSync(t))return;let n=[],o=!1;try{let u=JSON.parse(h.readFileSync(r,"utf8"));n=Array.isArray(u.components)?u.components:[],o=!!u.all}catch{return}let s=`
58
+ /*__EPX_FRAME_DEPS__${JSON.stringify(n)}__*/
59
+ `+(o?`/*__EPX_FRAME_DEPS_ALL__*/
60
+ `:"");h.appendFileSync(t,s)}async function ae(e,r,t,n,o,s){let u={};for(let p of t)u[p.key]=p.file;let i=new Set,l=(s||t).map(p=>p.file),a=await J({root:e.root,base:"./",logLevel:"silent",configFile:!1,plugins:[...r,z(),{name:"epx-lazy-lib-cycle-guard",buildEnd(){let p=B(()=>this.getModuleIds(),_=>this.getModuleInfo(_),o,l);p.length&&this.error(`[lazy-lib] \u5165\u53E3\u7EC4\u4EF6\u4E4B\u95F4\u5B58\u5728\u5FAA\u73AF\u4F9D\u8D56\uFF0C\u6309\u9700\u62C6\u5305\u4F1A\u5728\u8FD0\u884C\u65F6\u89E6\u53D1 TDZ\uFF08Cannot access ... before initialization\uFF09\u5E76\u767D\u5C4F\uFF1A
46
61
  `+p.map(_=>" "+_.join(`
47
62
  -> `)).join(`
48
63
  `)+`
49
64
  \u4E00\u4E2A .vue = \u4E00\u4E2A chunk\uFF0C\u6210\u73AF\u7684\u4E24\u4E2A\u7EC4\u4EF6\u8DE8 chunk \u540E\u521D\u59CB\u5316\u987A\u5E8F\u65AD\u88C2\u3002\u4E24\u6761\u51FA\u8DEF\uFF1A
50
65
  \u2460 \u628A\u73AF\u62C6\u6389\uFF1A\u62BD\u51FA\u53CC\u65B9\u90FD\u8981\u7684\u90A3\u90E8\u5206\u5230\u72EC\u7ACB\u6A21\u5757\uFF0C\u6539\u6210\u4E24\u4E2A\u7EC4\u4EF6\u90FD import \u5B83\uFF1B
51
66
  \u2461 \u8FD9\u4E2A\u5E93\u6682\u65F6\u4E0D\u7528\u6309\u9700\u5F62\u6001\uFF0C\u56DE\u5230\u6574\u4F53\u5355\u4F53\uFF08\u4E0D\u8BBE LAZY_LIB / enabled:false\uFF09\u3002
52
- \uFF08eager \u9009\u9879\u5E2E\u4E0D\u4E0A\u5FD9\uFF1A\u5B83\u53EA\u628A .vue \u4ECE\u7B2C\u2460\u8D9F\u7684 input \u91CC\u62FF\u6389\uFF0C\u7EC4\u4EF6\u4ECD\u5728\u6A21\u5757\u56FE\u91CC\uFF0C\u73AF\u8FD8\u5728\u3002\uFF09`)}}],css:e.css,resolve:e.resolve,define:e.define,publicDir:!1,build:{outDir:r,emptyOutDir:!1,cssCodeSplit:!1,...C(e.build),rollupOptions:{input:a,external:e.build.rollupOptions.external,preserveEntrySignatures:"strict",output:{format:"es",entryFileNames:"chunks/[name]-[hash].js",chunkFileNames:"chunks/[name]-[hash].js",paths:p=>(o.add(p),"./"+S(p))}}}}),m=Array.isArray(u)?u[0]:u,b=m.output.reduce((p,_)=>(p[_.fileName]=_,p),{}),d=e.build.rollupOptions.output&&e.build.rollupOptions.output.globals,g=N(b),f=new Map([...o].map(p=>["./"+S(p),p])),c=new Map;for(let[p,_]of g){let w=f.get(p);if(w){c.has(w)||c.set(w,new Set);for(let V of _)c.get(w).add(V)}}D([...o]);for(let[p,_]of c){let w=y.join(r,"chunks",S(p));h.mkdirSync(y.dirname(w),{recursive:!0}),h.writeFileSync(w,F(p,_,d))}let x={};for(let p of m.output)p.type==="chunk"&&p.isEntry&&(x[p.name]=p.fileName);return x}async function re(e,s,t,r,i){await B({root:e.root,logLevel:"silent",configFile:!1,plugins:s,css:e.css,resolve:e.resolve,define:e.define,publicDir:!1,build:{outDir:r,emptyOutDir:!1,cssCodeSplit:!1,...C(e.build),lib:{entry:t,name:`__epxFullLibs__.${i}`,formats:["umd"],fileName:()=>"index.full.js"},rollupOptions:{external:e.build.rollupOptions.external,output:{globals:e.build.rollupOptions.output&&e.build.rollupOptions.output.globals,exports:"default",assetFileNames:n=>(n.names||[n.name]).some(a=>String(a).endsWith(".css"))?"index.css":"assets/[name]-[hash][extname]"}}}})}function se({pkgName:e,entries:s,eagerKeys:t,manifest:r}){let i=s.filter(o=>t.has(o.key)),n=[];i.forEach((o,l)=>{n.push(`import __eager${l} from ${JSON.stringify(o.file.split(y.sep).join("/"))}`)});let a={};for(let o of s)t.has(o.key)||(a[o.key]=r[o.key]);return n.push(""),n.push("// \u6784\u5EFA\u671F\u751F\u6210\uFF08epx-frame lazy-lib\uFF09\uFF1A\u628A import.meta.glob \u7684 eager \u7ED3\u679C\u6362\u6210\u6309\u9700 wrapper\u3002"),n.push(`const __pkg = ${JSON.stringify(e)}`),n.push(`const __manifest = ${JSON.stringify(a,null,2)}`),n.push("const __frame = (typeof window !== 'undefined' && window.frame) || {}"),n.push("const __cur = (typeof document !== 'undefined' && document.currentScript && document.currentScript.src) || ''"),n.push("const __base = __cur ? __cur.slice(0, __cur.lastIndexOf('/') + 1) : ''"),n.push("let __lazy = {}"),n.push("if (typeof __frame.registerLazyLibrary === 'function') {"),n.push(" __lazy = __frame.registerLazyLibrary(__pkg, { base: __base, components: __manifest, full: 'index.full.js' })"),n.push("} else if (__frame.Vue && __frame.Vue.defineAsyncComponent) {"),n.push(" // \u964D\u7EA7\u2461\uFF1A\u5E73\u53F0\u6CA1\u6709\u8BE5 API\uFF08\u65E7\u7248\u5E73\u53F0\uFF09\u65F6\u58F3\u81EA\u5EFA wrapper\uFF0C\u529F\u80FD\u7B49\u4EF7\uFF0C\u65E0\u96C6\u4E2D\u9884\u53D6\u3002"),n.push(" for (const k in __manifest) {"),n.push(" const f = __manifest[k]"),n.push(" const w = __frame.Vue.defineAsyncComponent(() => import(/* @vite-ignore */ __base + f))"),n.push(" w.name = k"),n.push(" __lazy[k] = w"),n.push(" }"),n.push("} else {"),n.push(" console.error('[frame.lazy] \u5E73\u53F0\u65E2\u6CA1\u6709 registerLazyLibrary \u4E5F\u6CA1\u6709 Vue \u2014\u2014 \u8BF7\u5347\u7EA7\u5E73\u53F0\uFF0C\u6216\u6539\u7528\u6574\u4F53\u5355\u4F53\u5F62\u6001\u6784\u5EFA\u672C\u5E93', __pkg)"),n.push("}"),n.push("const __out = {}"),s.forEach(o=>{let l=i.indexOf(o),u=l>=0?`__eager${l}`:`__lazy[${JSON.stringify(o.key)}]`;n.push(`__out[${JSON.stringify(o.globKey)}] = { default: ${u} }`)}),n.push("export default __out"),n.join(`
67
+ \uFF08eager \u9009\u9879\u5E2E\u4E0D\u4E0A\u5FD9\uFF1A\u5B83\u53EA\u628A .vue \u4ECE\u7B2C\u2460\u8D9F\u7684 input \u91CC\u62FF\u6389\uFF0C\u7EC4\u4EF6\u4ECD\u5728\u6A21\u5757\u56FE\u91CC\uFF0C\u73AF\u8FD8\u5728\u3002\uFF09`)}}],css:e.css,resolve:e.resolve,define:e.define,publicDir:!1,build:{outDir:n,emptyOutDir:!1,cssCodeSplit:!0,...U(e.build),rollupOptions:{input:u,external:e.build.rollupOptions.external,preserveEntrySignatures:"strict",output:{format:"es",entryFileNames:"chunks/[name]-[hash].js",chunkFileNames:"chunks/[name]-[hash].js",paths:p=>(i.add(p),"./"+S(p))}}}}),m=Array.isArray(a)?a[0]:a,b=m.output.reduce((p,_)=>(p[_.fileName]=_,p),{}),y=e.build.rollupOptions.output&&e.build.rollupOptions.output.globals,g=A(b),f=new Map([...i].map(p=>["./"+S(p),p])),c=new Map;for(let[p,_]of g){let w=f.get(p);if(w){c.has(w)||c.set(w,new Set);for(let R of _)c.get(w).add(R)}}D([...i]);for(let[p,_]of c){let w=d.join(n,"chunks",S(p));h.mkdirSync(d.dirname(w),{recursive:!0}),h.writeFileSync(w,I(p,_,y))}let x={};for(let p of m.output)p.type==="chunk"&&p.isEntry&&(x[p.name]=p.fileName);return x}async function ue(e,r,t,n,o){await J({root:e.root,logLevel:"silent",configFile:!1,plugins:[...r,z(!0)],css:e.css,resolve:e.resolve,define:e.define,publicDir:!1,build:{outDir:n,emptyOutDir:!1,cssCodeSplit:!1,...U(e.build),lib:{entry:t,name:`__epxFullLibs__.${o}`,formats:["umd"],fileName:()=>"index.full.js"},rollupOptions:{external:e.build.rollupOptions.external,output:{globals:e.build.rollupOptions.output&&e.build.rollupOptions.output.globals,exports:"default",assetFileNames:s=>(s.names||[s.name]).some(u=>String(u).endsWith(".css"))?"index.css":"assets/[name]-[hash][extname]"}}}})}function ce({pkgName:e,entries:r,eagerKeys:t,manifest:n}){let o=r.filter(i=>t.has(i.key)),s=[];o.forEach((i,l)=>{s.push(`import __eager${l} from ${JSON.stringify(i.file.split(d.sep).join("/"))}`)});let u={};for(let i of r)t.has(i.key)||(u[i.key]=n[i.key]);return s.push(""),s.push("// \u6784\u5EFA\u671F\u751F\u6210\uFF08epx-frame lazy-lib\uFF09\uFF1A\u628A import.meta.glob \u7684 eager \u7ED3\u679C\u6362\u6210\u6309\u9700 wrapper\u3002"),s.push(`const __pkg = ${JSON.stringify(e)}`),s.push(`const __manifest = ${JSON.stringify(u,null,2)}`),s.push(`const __prefetchExclude = ${JSON.stringify(r.filter(M).map(i=>i.key))}`),s.push("const __frame = (typeof window !== 'undefined' && window.frame) || {}"),s.push("const __cur = (typeof document !== 'undefined' && document.currentScript && document.currentScript.src) || ''"),s.push("const __base = __cur ? __cur.slice(0, __cur.lastIndexOf('/') + 1) : ''"),s.push("let __lazy = {}"),s.push("if (typeof __frame.registerLazyLibrary === 'function') {"),s.push(" __lazy = __frame.registerLazyLibrary(__pkg, { base: __base, components: __manifest, full: 'index.full.js', prefetchExclude: __prefetchExclude }, __frame.registerLazyLibrary.supportsPrefetchExclude ? undefined : { prefetch: false })"),s.push("} else if (__frame.Vue && __frame.Vue.defineAsyncComponent) {"),s.push(" // \u964D\u7EA7\u2461\uFF1A\u5E73\u53F0\u6CA1\u6709\u8BE5 API\uFF08\u65E7\u7248\u5E73\u53F0\uFF09\u65F6\u58F3\u81EA\u5EFA wrapper\uFF0C\u529F\u80FD\u7B49\u4EF7\uFF0C\u65E0\u96C6\u4E2D\u9884\u53D6\u3002"),s.push(" for (const k in __manifest) {"),s.push(" const f = __manifest[k]"),s.push(" const w = __frame.Vue.defineAsyncComponent(() => import(/* @vite-ignore */ __base + f))"),s.push(" w.name = k"),s.push(" __lazy[k] = w"),s.push(" }"),s.push("} else {"),s.push(" console.error('[frame.lazy] \u5E73\u53F0\u65E2\u6CA1\u6709 registerLazyLibrary \u4E5F\u6CA1\u6709 Vue \u2014\u2014 \u8BF7\u5347\u7EA7\u5E73\u53F0\uFF0C\u6216\u6539\u7528\u6574\u4F53\u5355\u4F53\u5F62\u6001\u6784\u5EFA\u672C\u5E93', __pkg)"),s.push("}"),s.push("const __out = {}"),r.forEach(i=>{let l=o.indexOf(i),a=l>=0?`__eager${l}`:`__lazy[${JSON.stringify(i.key)}]`;s.push(`__out[${JSON.stringify(i.globKey)}] = { default: ${a} }`)}),s.push("export default __out"),s.join(`
53
68
  `)+`
54
- `}export{H as checkOutDir,Y as default,P as rmCssFiles,J as rmStrayDepsJson,Q as warnEmittedAssets,te as writeFrameDepsMarker};
69
+ `}export{se as checkOutDir,ne as default,re as rmCssFiles,T as rmStrayDepsJson,ie as warnEmittedAssets,le as writeFrameDepsMarker};
@@ -204,6 +204,8 @@ Claude Code 项目技能放在 `.claude/skills/epxing-frontend-vue3-migrate/`,
204
204
 
205
205
  ## 库构建命令约定
206
206
 
207
+ CLI 0.5.0-beta.11 起,按需库 CSS 随各自 JS 同步注入,index.css 保留空文件兼容旧加载 URL;不能再以它包含全部组件样式验收。检查单组件加载前后样式、共享样式去重、资源路径与整库兜底。可视化、设计器与预览组件不后台预取,实际使用仍加载;新壳在旧平台关闭后台预取,平台支持 supportsPrefetchExclude 后普通组件可选择性预取。产品使用本地 CLI 插件,须更新产品依赖并重建整个 lib,不能只更新全局命令。
208
+
207
209
  库构建分支须设置 `build.copyPublicDir: false`,避免旧 `public/cmaps`、`public/index.html` 原样混入 `lib/`;应用构建仍保留所需静态资源,不能删除源 public 目录。验收懒加载和全量库目录均无多余应用入口;若 index.html 不来自 public,继续检查是否误走 app 模式或自定义复制插件。已有动态/展开构建配置由 AI 按实际分支核对,不能跳过报告项。
208
210
 
209
211
  升级收尾必须复查 `package.json`:标准 `build:lib` 应为 `node build-lib.mjs`,不得残留 `--full`;全量参数放在 `build:lib:full`。CLI 0.5.0-beta.9 补齐旧标准入口带 `--full` 的自动迁移。自定义构建或入口文件报告待接入时,由 AI 在已有升级授权内核对并保留必要步骤,不能将“保留原命令”当成默认懒加载已完成。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epxing/cli",
3
- "version": "0.5.0-beta.10",
3
+ "version": "0.5.0-beta.11",
4
4
  "description": "EPX 交互式工程开发、服务启动、构建、Vue3 迁移及技能安装工具",
5
5
  "type": "module",
6
6
  "bin": {