@epxing/cli 0.5.0-beta.13 → 0.5.0-beta.15
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 +3 -3
- package/README.md +5 -1
- package/dist/cli.mjs +8 -4
- package/dist/platform-version.mjs +13 -4
- package/dist/skills/epxing-frontend-vue3-migrate/SKILL.md +4 -0
- package/dist/skills/epxing-frontend-vue3-migrate/pitfalls.md +6 -0
- package/dist/skills/epxing-frontend-vue3-migrate/references/upgrade-review.md +1 -0
- package/dist/tools/chunks/{VASFHXYG.mjs → EIUEHK6C.mjs} +10 -10
- package/dist/tools/epx-create/scaffold.mjs +11 -11
- package/dist/tools/epx-migrate/detect-vue3-risks.mjs +1 -1
- package/dist/tools/epx-migrate/migrate.mjs +1 -1
- package/package.json +6 -8
package/API.md
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
独立工程命令行工具,终端命令名为 epxing。/vite 提供产品构建插件,根入口不提供业务运行时。
|
|
4
4
|
|
|
5
|
-
本页对应包版本 `0.5.0-beta.
|
|
5
|
+
本页对应包版本 `0.5.0-beta.15`。导出名、子路径和签名从当前源码、package.json 与类型声明生成。
|
|
6
6
|
|
|
7
7
|
## 安装与使用
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
```sh
|
|
11
|
-
npm install -g @epxing/cli@0.5.0-beta.
|
|
11
|
+
npm install -g @epxing/cli@0.5.0-beta.15
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
|
|
@@ -24,7 +24,7 @@ epxing migrate .
|
|
|
24
24
|
|
|
25
25
|
## 接入约定
|
|
26
26
|
|
|
27
|
-
工程命令使用当前项目已安装的依赖和脚本。--dir 指定项目目录;创建/迁移默认使用 @epxing
|
|
27
|
+
工程命令使用当前项目已安装的依赖和脚本。--dir 指定项目目录;创建/迁移默认使用 @epxing 独立包,版本留空写入 major-N 标签,跟随当前大版本最新版(包含 beta);已有独立包升级保持当前大版本。--packages-version 可指定数字版本或标签;--epx-frame 仅显式保留旧聚合模式,两者互斥。CLI 采用自己的版本号,独立于其余平台包。创建和升级在可识别的应用入口预留默认注释的 installLegacyFrame 导入与调用;需要旧远程库共享桥时手动启用,要求 core 5.3.0-beta.5 或以上。升级保留已有启用状态,重复升级不重复插入。完整参数、迁移与发布说明见本包 README。
|
|
28
28
|
|
|
29
29
|
## 稳定子路径
|
|
30
30
|
|
package/README.md
CHANGED
|
@@ -4,7 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
独立的工程开发工具,包含交互菜单、开发服务、产品库构建、创建、Vue3 迁移、静态检查和升级技能安装。创建和升级默认使用 `@epxing/*` 独立包,版本留空时查询最新 `beta` 并固定到具体版本,没有 `beta` 时使用 `latest`;可用 `--packages-version` 指定版本或标签。CLI 使用自己的版本号。创建和升级会生成产品使用说明;`@epxing/cli/vite` 提供产品构建插件,不依赖聚合包中的构建工具。
|
|
6
6
|
|
|
7
|
-
本批测试版本:`@epxing/cli@0.5.0-beta.
|
|
7
|
+
本批测试版本:`@epxing/cli@0.5.0-beta.15`,平台包 `6.1.0-beta`,均使用 npm 公网 `beta` 标签。CLI 与平台独立版本。完整流程见文档站“CLI 创建、升级与产品使用”;各包公开 API 随安装包的 `API.md` 提供。
|
|
8
|
+
|
|
9
|
+
`0.5.0-beta.15` 创建与升级默认将平台依赖写为 `major-N`(如 `major-6`),跟随该大版本最新公开版本,包含 beta。已有独立包升级保持当前大版本;显式 `--packages-version` 仍可固定数字版本。lockfile 锁定实际安装版本,刷新依赖使用 `npm update`。八个平台包的发布流程维护各自的大版本标签。
|
|
10
|
+
|
|
11
|
+
`0.5.0-beta.14` 强化 F28 表单上下文透传检查:沿发送端、继承/包装组件、懒加载页签和原生根核对 form prop,补齐逐页签验收与宿主制品核对;保留 class/style、事件和上下文,不自动批量添加 prop 或关闭 attrs 继承。
|
|
8
12
|
|
|
9
13
|
`0.5.0-beta.13` 根据考核迁移报告补充插槽作用域、响应式状态、树刷新、异步依赖与移动布局复核。列表只读扫描新增同层插槽参数条件检测,覆盖解构、别名和局部变量遮蔽;模板解析失败非零退出,不自动改写业务条件。新增 F32–F34,明确历史报告对账和未定位问题的验收边界。
|
|
10
14
|
|
package/dist/cli.mjs
CHANGED
|
@@ -94,12 +94,12 @@ async function interactive (cwd, action) {
|
|
|
94
94
|
}
|
|
95
95
|
if (action === 'migrate') {
|
|
96
96
|
const dir = await prompts.required('待升级工程目录', '.')
|
|
97
|
-
const target = await
|
|
97
|
+
const target = await prompts.text('目标 @epxing 包版本(留空跟随当前大版本,包含 beta)')
|
|
98
98
|
const flags = await prompts.select('迁移范围', choices([
|
|
99
99
|
['依赖与入口迁移', []], ['依赖、入口与 Vue 组件转换', ['--transform-vue']],
|
|
100
100
|
['依赖、Vue 组件及 Vite 构建迁移', ['--transform-vue', '--to-vite']]
|
|
101
101
|
]))
|
|
102
|
-
const args = ['migrate', dir, '--packages-version', target, ...flags]
|
|
102
|
+
const args = ['migrate', dir, ...(target ? ['--packages-version', target] : []), ...flags]
|
|
103
103
|
const preview = await main(args, cwd)
|
|
104
104
|
if (preview !== 0 || !(await prompts.confirm('应用以上迁移?要求 Git 工作树干净;默认不修改'))) return preview
|
|
105
105
|
return dispatch([...args, '--apply'])
|
|
@@ -193,7 +193,7 @@ export async function main (argv = process.argv.slice(2), cwd = process.env.INIT
|
|
|
193
193
|
dev / build / lib 等执行当前工程的 package.json 脚本,使用工程本地依赖。
|
|
194
194
|
工程命令可用 -- 后的参数透传给脚本;serve / upgrade 分别是 dev / migrate 的别名。
|
|
195
195
|
create、migrate 默认使用 @epxing/core、@epxing/components 等独立包。
|
|
196
|
-
|
|
196
|
+
版本留空时写入 major-N 标签,跟随当前大版本最新版(包含 beta);升级已有独立包时保留其大版本。可用 --packages-version 固定版本或指定标签。
|
|
197
197
|
--epx-frame <版本或spec> 保留旧聚合模式,与 --packages-version 互斥。
|
|
198
198
|
创建和升级自动写入 runtime: "vue3"。迁移默认 dry-run,--apply 才落盘。
|
|
199
199
|
create 默认启动平台系统;upgrade 可修复原始计数欢迎页入口,自定义入口保留。
|
|
@@ -228,7 +228,11 @@ Vue 3 工程通常无需 --transform-vue;升级后验证平台登录、菜单
|
|
|
228
228
|
if (dirs.length > 1) throw new Error('一次迁移一个项目目录')
|
|
229
229
|
const dir = dirs[0] || '.'
|
|
230
230
|
const cliVersion = JSON.parse(fs.readFileSync(path.join(packageRoot, 'package.json'), 'utf8')).version
|
|
231
|
-
if (target.independent)
|
|
231
|
+
if (target.independent) {
|
|
232
|
+
const manifest = path.resolve(cwd, dir, 'package.json')
|
|
233
|
+
const current = fs.existsSync(manifest) ? JSON.parse(fs.readFileSync(manifest, 'utf8')) : {}
|
|
234
|
+
target.value = await resolvePlatformVersion(target.value, undefined, current.dependencies?.['@epxing/core'])
|
|
235
|
+
}
|
|
232
236
|
return runTool('epx-migrate/migrate.mjs', [path.resolve(cwd, dir), ...args.filter(arg => arg !== dir), target.independent ? '--packages-version' : '--epx-frame', target.value, ...(target.independent ? ['--cli-version', cliVersion] : [])], cwd)
|
|
233
237
|
}
|
|
234
238
|
if (command === 'theme') {
|
|
@@ -29,17 +29,26 @@ function readMetadata (url) {
|
|
|
29
29
|
})
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
//
|
|
33
|
-
export async function resolvePlatformVersion (spec, registry = process.env.npm_config_registry || 'https://registry.npmjs.org/') {
|
|
32
|
+
// 默认依赖跟随大版本标签;显式数字离线使用,普通标签保持原有固定版本语义。
|
|
33
|
+
export async function resolvePlatformVersion (spec, registry = process.env.npm_config_registry || 'https://registry.npmjs.org/', currentSpec) {
|
|
34
34
|
if (spec && !/^(?:[~^]?\d+\.\d+\.\d+(?:-[\w.-]+)?|[a-z][\w.-]*)$/.test(spec)) throw new Error('--packages-version 需要 npm 版本、版本范围或标签')
|
|
35
35
|
if (spec && /^[~^]?\d/.test(spec)) return spec
|
|
36
|
-
const
|
|
36
|
+
const currentMajor = currentSpec?.match(/^(?:major-|[~^]?)(\d+)(?:\.|$)/)?.[1]
|
|
37
|
+
const tag = spec || (currentMajor ? `major-${currentMajor}` : 'beta')
|
|
37
38
|
try {
|
|
38
39
|
const metadata = await readMetadata(new URL('@epxing%2fcore', registry.endsWith('/') ? registry : registry + '/'))
|
|
39
40
|
const tags = metadata['dist-tags'] || {}
|
|
40
|
-
const selectedTag = tags[tag] ? tag : !spec ? 'latest' : tag
|
|
41
|
+
const selectedTag = tags[tag] ? tag : !spec && !currentMajor ? 'latest' : tag
|
|
41
42
|
const version = tags[selectedTag]
|
|
42
43
|
if (!version || !/^\d+\.\d+\.\d+(?:-[\w.-]+)?$/.test(version)) throw new Error(`npm 中没有可用的 ${tag} 版本`)
|
|
44
|
+
if (/^major-\d+$/.test(tag) && version.split('.')[0] !== tag.slice(6)) throw new Error(`${tag} 指向了其他大版本 ${version}`)
|
|
45
|
+
if (!spec || /^major-\d+$/.test(spec)) {
|
|
46
|
+
const majorTag = `major-${version.split('.')[0]}`
|
|
47
|
+
if (!tags[majorTag]) throw new Error(`npm 中没有可用的 ${majorTag} 标签,请先发布该大版本标签`)
|
|
48
|
+
if (!/^\d+\.\d+\.\d+(?:-[\w.-]+)?$/.test(tags[majorTag]) || tags[majorTag].split('.')[0] !== version.split('.')[0]) throw new Error(`${majorTag} 指向了其他大版本或无效版本`)
|
|
49
|
+
console.log(`平台独立包依赖:${majorTag}(当前 ${tags[majorTag]})`)
|
|
50
|
+
return majorTag
|
|
51
|
+
}
|
|
43
52
|
console.log(`平台独立包版本:${version}(${selectedTag})`)
|
|
44
53
|
return version
|
|
45
54
|
} catch (error) {
|
|
@@ -113,6 +113,7 @@ Claude Code 项目技能放在 `.claude/skills/epxing-frontend-vue3-migrate/`,
|
|
|
113
113
|
| `[vuex] duplicate getter key` | 库被装了两次(本地 + 远程) |
|
|
114
114
|
| `[vite:vue] reading 'type'`(无行号,某 .vue) | gogocode 漏转元素上的 `slot="x"`(F1) |
|
|
115
115
|
| `组件注册名冲突:… copy.vue` | 垃圾副本文件撞名(F8,`find src -iname "*copy*"`) |
|
|
116
|
+
| 切换页签或打开详情时报 `Cannot convert object to primitive value`、`setAttribute` 异常 | 按 F28 追踪 `form` 实例的传参链;接收组件未声明 prop 时,Vue3 可能把它透传到原生 DOM。后续 vnode/parentNode 异常先回溯首条错误 |
|
|
116
117
|
| `npm i` 显示成功但 vite/依赖没装上 | `node-sass`/`fibers` 原生编译挂、exit code 被管道吞(F7) |
|
|
117
118
|
| `[loadComponent] 找不到 epx-xxx`(本地新迁的库) | 源码版本落后线上部署、缺组件(`verify-components.mjs --online` 对齐) |
|
|
118
119
|
|
|
@@ -128,6 +129,8 @@ Claude Code 项目技能放在 `.claude/skills/epxing-frontend-vue3-migrate/`,
|
|
|
128
129
|
|
|
129
130
|
**本地包链接不等于加载源码**:核对安装包 exports 实际指向 src 还是 dist。修改本地链接平台源码后,若消费方读取 dist,应在授权范围重建对应包,并重启/强制刷新消费方 Vite 预构建缓存;记录实际运行参数声明、请求来源与制品时间。区分 main.js 安装产品源码的开发应用与远程 UMD/按需制品宿主,两者验收分别记录,不能互相代替。按 F28 实际切换全部目标页签后再报告本地修复结果。
|
|
130
131
|
|
|
132
|
+
**表单上下文透传必查**:升级后即使默认页无报错,也按 [F28](pitfalls.md#f28-审核详情空白加载遮罩残留与懒加载页签计数) 从 `:form`、JSX/render 的 `form`、`v-bind` 对象及 `$attrs` 展开追踪实际接收端,检查产品组件、平台基类、包装组件和懒加载页签的有效 props。只修已报错组件不算完成;未激活的页签记待验证。对确定接收表单实例的组件声明正确 prop,并保留上下文转发及 class/style 等合法 attrs;不能给所有组件盲加 prop,也不能全局过滤 attrs 掩盖遗漏。
|
|
133
|
+
|
|
131
134
|
**目标宿主共享依赖必查**:用户指定了运行地址时,以该宿主为验收目标,不能用本地新版包代替。按 F26 核对最终 deps 清单和共享 shim 实际使用的包/导出;预加载后应在 `__EPX_PACKAGES__` 对应命名空间拿到同步真身。旧 `window.frame` 有组件不代表独立共享包已发布组件;继承基类缺失时先修共享加载桥并发布宿主,再用新会话复验,不能给 `$component`/`upPage` 填空对象掩盖。
|
|
132
135
|
|
|
133
136
|
**当前角色必须迁移到平台上下文**:按 F27 扫描并修复当前角色 ID/code 的取值和消费点,ID 使用 `$currentRoleId`(或 `$currentRole?.id`),code 使用 `$currentRole?.code`。已继承平台基类或公共组件混入的直接使用;普通自定义组件接入 `@epxing/core` 的 `ComponentMixin`。不自行解析地址、不从 localStorage 恢复当前角色、不额外查询角色列表匹配当前角色;角色管理页的编辑值和业务角色字段须保留各自语义。已授权升级中由 AI 完成可确认的迁移,并验证旧地址、新菜单地址及角色切换。
|
|
@@ -196,6 +199,7 @@ Claude Code 项目技能放在 `.claude/skills/epxing-frontend-vue3-migrate/`,
|
|
|
196
199
|
7. 按 G 节核对适用的交互、上下文、浮层、表格、设计器和性能问题。区分已检查不适用、已验证通过、已改待验证和阻塞;临时浏览器修正、平台兼容单测或旧会话交付记录,不能作为当前产品新制品已通过的证据。
|
|
197
200
|
8. 使用本地替换库验收时,记录入口、CSS、清单和实际加载分片的响应与磁盘一致、入口加载方式正确,以及详情页实测结果。存在加载语法错误时先修接入;接口返回空列表时记录查询参数与配置依据,不为填充页面写入默认业务数据。
|
|
198
201
|
9. 核对 F27 当前角色迁移:ID/code 与接口及权限判断语义一致;旧含角色地址、新不含角色菜单地址、切换角色及缓存组件复用均取当前应用角色。普通组件已接入公共混入,未引入地址/存储兜底或重复初始化。
|
|
202
|
+
10. 核对 F28 的 form 接收链:已逐个激活方案等业务页签及嵌套页签,检查有效 props、首条异常和真实内容,确认表单实例未落到原生 DOM,样式及上下文仍可用;平台源码修复已核对目标宿主制品,未发布或未激活的项不得标通过。
|
|
199
203
|
|
|
200
204
|
## 常见错误
|
|
201
205
|
|
|
@@ -711,6 +711,12 @@ export default {
|
|
|
711
711
|
|
|
712
712
|
审核列表/卡片已返回数据但详情空白时,先捕获首条异常及实际接收组件。平台表单会下发 `form` 实例;未声明为 prop 的接收组件在 Vue3 自动继承 attrs 时可能将实例写到原生 DOM,报 `setAttribute: Cannot convert object to primitive value`,后续可能连带出现 null vnode/parentNode 异常。工资审核页实证接收端为平台 Card、EntityList(含产品派生列表)。修复接收端声明 `form: Object`,保留 class/style 继承及上下文;不要 stringify 实例、吞渲染异常或批量关闭 inheritAttrs。扫描同一传参链的其他接收端,以 null 原型对象或真实 Vue 实例验证 form 不落 DOM、外部样式仍落根;平台源码修复须另核对目标宿主发布版本,不能只发布产品包。
|
|
713
713
|
|
|
714
|
+
**按接收链检查,不能只按报错组件补丁**:方案标签页等业务容器同样可能接收平台表单实例,该问题不限定于审核页或列表。升级时先搜索模板 `:form`、JSX/render 的 `form`、`v-bind` 对象与 `$attrs` 展开,沿动态组件、包装层和懒加载子项追踪到实际接收端;检查 `extends`/mixins 合并后的有效 props,不能仅因本文件没有声明就判断遗漏。静态检索只列候选,动态配置与未展开对象仍须查来源,零命中不代表无需运行验证。
|
|
715
|
+
|
|
716
|
+
已确认接收实例的 Options API 组件声明 `props: { form: Object }`,`<script setup>` 在已有 `defineProps` 中补上相同契约;保留原 props 与必要的子组件转发。prop 声明只阻止该层自动落 DOM,若后续显式把 form 放入原生元素的 `v-bind`/属性 spread,仍需在该原生边界移除这一非 DOM 值。不要给所有组件盲加 prop,不修改表单实例为字符串,不用重试、空对象或整体关闭 attrs 继承绕过异常。`inheritAttrs: false` 的组件还须检查显式 `$attrs` 的去向。
|
|
717
|
+
|
|
718
|
+
**回归判据**:用 null 原型对象或真实表单实例作为输入,检查实际接收值身份不变、根 DOM 没有非业务用途的 form 属性、控制台无首条转换异常,并验证外传 class/style、事件及子组件上下文仍正常。逐个激活方案页签、非默认及嵌套页签,再验证切换返回和缓存复用后的真实内容。记录发送端→接收端→原生根、有效 prop 来源、实际加载版本及未测分支;不能用普通 `{}` 恰好可转字符串、构建成功或默认页正常代替该项验收。原生表单控件合法的字符串 form ID 关联需保留,不能全仓删除同名属性。
|
|
719
|
+
|
|
714
720
|
若加载变量已 false 但遮罩仍在,检查实际可见节点、VNode 分支及指令生命周期。JSX/render 在有/无数据分支复用同类型根 div,仅空分支带 v-loading 时可能留下旧遮罩;给互斥分支不同 key 或统一指令绑定,验证加载→内容、空结果及请求失败,不以手动删除遮罩验收。同时检查异步链空结果是否结束加载。模板 v-if 的编译器处理与手写 render 不同,静态命中不等于缺陷;按实际分支检查。
|
|
715
721
|
|
|
716
722
|
页签计数读取子项配置前,核对懒加载实例及 itemConfigs 是否就绪。配置尚未就绪时延后该项统计,不能用空配置发起无范围查询,也不能将计数异常认作后端无数据。已有模板/实例配置来源按当前平台契约保留。
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
| 历史列表翻页异常、分页弃用警告 | 模板事件与 JSX 事件命名不同;当前页/每页数更新;sizes 所需监听 | 翻页及切换页大小改变绑定值与请求参数;目标版本无对应警告 | [F30](../pitfalls.md#f30-布局分页及可选配置的静默回退) |
|
|
16
16
|
| 页面贴边、卡片布局或弹窗对齐丢失 | render 根与 CSS 选择器不符、插槽后代缺 scopeId、选择框默认占满一行、父布局最小尺寸 | 实际继承/插槽链下计算样式正确;普通和窄容器可用;外部同名元素及其他页面不受影响 | F15、F19、F20、F30 |
|
|
17
17
|
| 初次渲染异常,异步筛选或回显不更新 | data/props/computed 声明、普通 filters 字段误当旧过滤器、Vue2 模型、对象/数组监听 | 从空初值加载到结果;保留 0、false;回显、清空、再次读取和请求序列化一致 | F16、F24 |
|
|
18
|
+
| 方案等页签或详情报 setAttribute/对象转字符串异常 | form 实例从发送端经继承、包装和动态组件到实际接收端的有效 props,以及显式 attrs 展开的原生边界 | 逐个激活非默认/嵌套页签;实例不落 DOM,接收值及下传身份正确,class/style 和上下文保留;核对宿主实际制品 | [F28](../pitfalls.md#f28-审核详情空白加载遮罩残留与懒加载页签计数) |
|
|
18
19
|
| 卡片标题错误、关闭图标后白屏、步骤选中混乱 | propsData 等旧结构、可选配置 null、当前项与完成数不同、页面参数类型 | 无图标/无标题分支仍可用;当前步骤可辨;回退和全部完成状态正确 | F22、F29、F30 |
|
|
19
20
|
| 本地修了,目标站仍旧或空白 | 实际加载的宿主/产品版本与 JS、CSS、清单、分片;服务 500 与渲染异常分别取证 | 同批制品、正确 MIME/加载方式、真实页面操作;旧缓存或临时注入不能当发布生效 | D3、F23、G |
|
|
20
21
|
| 库包夹带 index.html/制品不全 | 独立应用与远程库输出混淆、publicDir 复制、并发构建清理、懒加载清单遗漏 | 库入口与 CSS/依赖/分片匹配;应用构建按设计保留 HTML;上传形态完整 | B、C、下文制品检查 |
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as n}from"./J7B2EWKH.mjs";var a=`import { createRequire } from 'node:module'
|
|
2
2
|
import path from 'node:path'
|
|
3
3
|
import { spawnSync } from 'node:child_process'
|
|
4
4
|
|
|
@@ -12,7 +12,7 @@ const result = spawnSync(process.execPath, [vite, 'build', ...args.filter(arg =>
|
|
|
12
12
|
})
|
|
13
13
|
if (result.error) throw result.error
|
|
14
14
|
process.exit(result.status ?? 1)
|
|
15
|
-
`;function c(
|
|
15
|
+
`;function c(r="5.3.0-beta.2"){if(/^major-\d+$/.test(r))return Number(r.slice(6))>=6;let o=r.match(/^[~^]?(\d+)\.(\d+)\.(\d+)(?:-([\w.-]+))?$/);if(!o)return!1;let[,s,t,e,i]=o,p=Number(s)*1e6+Number(t)*1e3+Number(e);return p!==5003e3?p>5003e3:!i||/^beta\.(\d+)$/.test(i)&&Number(i.slice(5))>=2}n(c,"usesAutomaticStyles");var l=["@epxing/core/style.css","@epxing/components/style.css","@epxing/business/style.css"],m={main:`import { createApp } from '@epxing/core'
|
|
16
16
|
import Components from '@epxing/components'
|
|
17
17
|
import Business from '@epxing/business'
|
|
18
18
|
import '@epxing/theme'
|
|
@@ -40,10 +40,10 @@ const count = ref(0)
|
|
|
40
40
|
<style scoped>
|
|
41
41
|
.product-start { padding: var(--epx-space-4, 24px); color: var(--epx-text); }
|
|
42
42
|
</style>
|
|
43
|
-
`};function g(
|
|
43
|
+
`};function g(r,o,s){let t=n(i=>(i||"").replaceAll(`\r
|
|
44
44
|
`,`
|
|
45
|
-
`).trim(),"normalize"),e=t(
|
|
46
|
-
`,"");return e===t(m.main)&&t(
|
|
45
|
+
`).trim(),"normalize"),e=t(r);for(let i of l)e=e.replace(`import '${i}'
|
|
46
|
+
`,"");return e===t(m.main)&&t(o)===t(m.app.replaceAll("__NAME__",s))}n(g,"isLegacyWelcomeProduct");function x(r,o){let s={...r,"build-lib.mjs":a,"package.json":JSON.stringify({name:"__NAME__",version:"0.1.0",private:!0,runtime:"vue3",type:"module",scripts:{dev:"vite","build:lib":"node build-lib.mjs","build:lib:full":"node build-lib.mjs --full","build:lib:lazy":"cross-env LAZY_LIB=true vite build","build:app":"vite build --mode app",preview:"vite preview"},dependencies:{"@epxing/core":"__PACKAGES_VERSION__","@epxing/components":"__PACKAGES_VERSION__","@epxing/utils":"__PACKAGES_VERSION__","@epxing/business":"__PACKAGES_VERSION__","@epxing/theme":"__PACKAGES_VERSION__",vue:"3.5.39","vue-router":"4.6.4",vuex:"4.1.0","element-plus":"2.14.3"},devDependencies:{"@epxing/cli":"__CLI_VERSION__","@epxing/icons":"__PACKAGES_VERSION__",vite:"^6.0.0","@vitejs/plugin-vue":"^5.2.1","@vitejs/plugin-vue-jsx":"^4.1.1",sass:"^1.83.3","cross-env":"^7.0.3"}},null,2)+`
|
|
47
47
|
`,"vite.config.mjs":`import path from 'node:path'
|
|
48
48
|
import { fileURLToPath } from 'node:url'
|
|
49
49
|
import { createRequire } from 'node:module'
|
|
@@ -136,15 +136,15 @@ npm run build:app
|
|
|
136
136
|
\`\`\`
|
|
137
137
|
|
|
138
138
|
\u672C\u5730\u9884\u89C8\u9ED8\u8BA4\u7AEF\u53E3 8080\uFF0C\u9ED8\u8BA4\u6253\u5F00\u5E73\u53F0\u7CFB\u7EDF\u3002\u542F\u52A8\u524D\u5728 .env.development.local \u914D\u7F6E\u540E\u7AEF\u53CA\u5BA2\u6237\u7AEF\u3001\u7CFB\u7EDF\u3001\u5E94\u7528\u53C2\u6570\uFF1B\u767B\u5F55\u3001\u83DC\u5355\u548C\u9996\u9875\u4F7F\u7528\u5E73\u53F0\u914D\u7F6E\u3002
|
|
139
|
-
`,"PRODUCT-GUIDE.md":u};if(!c(
|
|
140
|
-
`);for(let e of["src/main.js","PRODUCT-GUIDE.md"])
|
|
141
|
-
`+t)}return
|
|
139
|
+
`,"PRODUCT-GUIDE.md":u};if(!c(o)){let t=l.map(e=>`import '${e}'`).join(`
|
|
140
|
+
`);for(let e of["src/main.js","PRODUCT-GUIDE.md"])s[e]=s[e].replace("import '@epxing/theme'",`import '@epxing/theme'
|
|
141
|
+
`+t)}return s}n(x,"createPackageTemplates");var u=`# \u4EA7\u54C1\u5F00\u53D1\u4E0E\u5347\u7EA7\u4F7F\u7528\u8BF4\u660E
|
|
142
142
|
|
|
143
143
|
<!-- epxing-generated-product-guide -->
|
|
144
144
|
|
|
145
145
|
\u5E73\u53F0\u5305\u7248\u672C\uFF1A\`__PACKAGES_VERSION__\`\uFF1BCLI \u7248\u672C\uFF1A\`__CLI_VERSION__\`\u3002CLI \u4E0E\u5E73\u53F0\u5305\u5206\u522B\u5347\u7EA7\u3002
|
|
146
146
|
|
|
147
|
-
\u521B\u5EFA\
|
|
147
|
+
\u521B\u5EFA\u65F6\u4E0D\u586B\u7248\u672C\uFF0CCLI \u6839\u636E beta\uFF08\u6CA1\u6709\u65F6\u7528 latest\uFF09\u9009\u62E9\u5927\u7248\u672C\uFF0C\u4F9D\u8D56\u5199\u4E3A major-N \u6807\u7B7E\uFF1B\u5347\u7EA7\u5DF2\u6709\u72EC\u7ACB\u5305\u65F6\u4FDD\u6301\u5F53\u524D\u5927\u7248\u672C\uFF0C\u5305\u542B\u8BE5\u5927\u7248\u672C\u7684 beta\uFF0C\u4E0D\u81EA\u52A8\u8DE8\u5927\u7248\u672C\u3002\u663E\u5F0F --packages-version \u53EF\u56FA\u5B9A\u6570\u5B57\u7248\u672C\u6216\u6307\u5B9A\u6807\u7B7E\u3002\u5B89\u88C5\u540E\u7684 lockfile \u4ECD\u9501\u5B9A\u5B9E\u9645\u7248\u672C\uFF1B\u9700\u8981\u5237\u65B0\u65F6\u8FD0\u884C npm update\u3002\u57FA\u7840\u7EC4\u4EF6\u7EDF\u4E00\u4ECE @epxing/components \u5BFC\u5165\u3002
|
|
148
148
|
|
|
149
149
|
## \u5B89\u88C5\u4E0E\u542F\u52A8
|
|
150
150
|
|
|
@@ -231,7 +231,7 @@ vite.config.mjs \u53EA\u5728\u8FDC\u7A0B\u5E93\u6784\u5EFA\u542F\u7528 epxShared
|
|
|
231
231
|
epxing migrate .
|
|
232
232
|
epxing migrate . --apply
|
|
233
233
|
epxing migrate . --transform-vue --to-vite --apply
|
|
234
|
-
# \
|
|
234
|
+
# \u6307\u5B9A\u7248\u672C\u6216\u6807\u7B7E\uFF1Aepxing migrate . --packages-version __PACKAGES_VERSION__
|
|
235
235
|
\`\`\`
|
|
236
236
|
|
|
237
237
|
\u9ED8\u8BA4\u53EA\u8BFB\u9884\u89C8\uFF1B--apply \u8981\u6C42 Git \u5DE5\u4F5C\u6811\u5E72\u51C0\u3002\u5347\u7EA7\u4FDD\u7559\u4E1A\u52A1\u7EC4\u4EF6\u3001\u8DEF\u7531\u3001store \u548C\u81EA\u5B9A\u4E49\u914D\u7F6E\uFF0C\u53EA\u81EA\u52A8\u6539\u5199\u786E\u5B9A\u7684\u5BFC\u5165\u53CA\u5165\u53E3\u3002\u52A8\u6001\u53D6\u503C\u3001\u672A\u77E5\u65E7\u63A5\u53E3\u3001\u672A\u652F\u6301\u7684\u6E90\u7801\u8DEF\u5F84\u8FDB\u5165 MIGRATION-REPORT.md \u4EBA\u5DE5\u6E05\u5355\uFF1B\u5B58\u5728\u65E0\u6CD5\u5B8C\u6574\u5207\u6362\u7684\u65E7\u5165\u53E3\u65F6\uFF0C\u4E0D\u6DF7\u88C5\u4E24\u5957\u8FD0\u884C\u65F6\uFF0C\u5148\u4FDD\u7559\u65E7\u6A21\u5F0F\u5E76\u5B8C\u6210\u6E05\u5355\u518D\u5347\u7EA7\u3002
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var A=Object.defineProperty;var d=(
|
|
1
|
+
var A=Object.defineProperty;var d=(e,n)=>A(e,"name",{value:n,configurable:!0});var _=`import { createRequire } from 'node:module'
|
|
2
2
|
import path from 'node:path'
|
|
3
3
|
import { spawnSync } from 'node:child_process'
|
|
4
4
|
|
|
@@ -12,7 +12,7 @@ const result = spawnSync(process.execPath, [vite, 'build', ...args.filter(arg =>
|
|
|
12
12
|
})
|
|
13
13
|
if (result.error) throw result.error
|
|
14
14
|
process.exit(result.status ?? 1)
|
|
15
|
-
`;import l from"node:fs";import m from"node:path";import{execSync as b}from"node:child_process";import{fileURLToPath as S,pathToFileURL as j}from"node:url";function I(
|
|
15
|
+
`;import l from"node:fs";import m from"node:path";import{execSync as b}from"node:child_process";import{fileURLToPath as S,pathToFileURL as j}from"node:url";function I(e="5.3.0-beta.2"){if(/^major-\d+$/.test(e))return Number(e.slice(6))>=6;let n=e.match(/^[~^]?(\d+)\.(\d+)\.(\d+)(?:-([\w.-]+))?$/);if(!n)return!1;let[,o,t,p,a]=n,r=Number(o)*1e6+Number(t)*1e3+Number(p);return r!==5003e3?r>5003e3:!a||/^beta\.(\d+)$/.test(a)&&Number(a.slice(5))>=2}d(I,"usesAutomaticStyles");var h=["@epxing/core/style.css","@epxing/components/style.css","@epxing/business/style.css"];function v(e,n){let o={...e,"build-lib.mjs":_,"package.json":JSON.stringify({name:"__NAME__",version:"0.1.0",private:!0,runtime:"vue3",type:"module",scripts:{dev:"vite","build:lib":"node build-lib.mjs","build:lib:full":"node build-lib.mjs --full","build:lib:lazy":"cross-env LAZY_LIB=true vite build","build:app":"vite build --mode app",preview:"vite preview"},dependencies:{"@epxing/core":"__PACKAGES_VERSION__","@epxing/components":"__PACKAGES_VERSION__","@epxing/utils":"__PACKAGES_VERSION__","@epxing/business":"__PACKAGES_VERSION__","@epxing/theme":"__PACKAGES_VERSION__",vue:"3.5.39","vue-router":"4.6.4",vuex:"4.1.0","element-plus":"2.14.3"},devDependencies:{"@epxing/cli":"__CLI_VERSION__","@epxing/icons":"__PACKAGES_VERSION__",vite:"^6.0.0","@vitejs/plugin-vue":"^5.2.1","@vitejs/plugin-vue-jsx":"^4.1.1",sass:"^1.83.3","cross-env":"^7.0.3"}},null,2)+`
|
|
16
16
|
`,"vite.config.mjs":`import path from 'node:path'
|
|
17
17
|
import { fileURLToPath } from 'node:url'
|
|
18
18
|
import { createRequire } from 'node:module'
|
|
@@ -113,7 +113,7 @@ npm run build:app
|
|
|
113
113
|
|
|
114
114
|
\u5E73\u53F0\u5305\u7248\u672C\uFF1A\`__PACKAGES_VERSION__\`\uFF1BCLI \u7248\u672C\uFF1A\`__CLI_VERSION__\`\u3002CLI \u4E0E\u5E73\u53F0\u5305\u5206\u522B\u5347\u7EA7\u3002
|
|
115
115
|
|
|
116
|
-
\u521B\u5EFA\
|
|
116
|
+
\u521B\u5EFA\u65F6\u4E0D\u586B\u7248\u672C\uFF0CCLI \u6839\u636E beta\uFF08\u6CA1\u6709\u65F6\u7528 latest\uFF09\u9009\u62E9\u5927\u7248\u672C\uFF0C\u4F9D\u8D56\u5199\u4E3A major-N \u6807\u7B7E\uFF1B\u5347\u7EA7\u5DF2\u6709\u72EC\u7ACB\u5305\u65F6\u4FDD\u6301\u5F53\u524D\u5927\u7248\u672C\uFF0C\u5305\u542B\u8BE5\u5927\u7248\u672C\u7684 beta\uFF0C\u4E0D\u81EA\u52A8\u8DE8\u5927\u7248\u672C\u3002\u663E\u5F0F --packages-version \u53EF\u56FA\u5B9A\u6570\u5B57\u7248\u672C\u6216\u6307\u5B9A\u6807\u7B7E\u3002\u5B89\u88C5\u540E\u7684 lockfile \u4ECD\u9501\u5B9A\u5B9E\u9645\u7248\u672C\uFF1B\u9700\u8981\u5237\u65B0\u65F6\u8FD0\u884C npm update\u3002\u57FA\u7840\u7EC4\u4EF6\u7EDF\u4E00\u4ECE @epxing/components \u5BFC\u5165\u3002
|
|
117
117
|
|
|
118
118
|
## \u5B89\u88C5\u4E0E\u542F\u52A8
|
|
119
119
|
|
|
@@ -200,7 +200,7 @@ vite.config.mjs \u53EA\u5728\u8FDC\u7A0B\u5E93\u6784\u5EFA\u542F\u7528 epxShared
|
|
|
200
200
|
epxing migrate .
|
|
201
201
|
epxing migrate . --apply
|
|
202
202
|
epxing migrate . --transform-vue --to-vite --apply
|
|
203
|
-
# \
|
|
203
|
+
# \u6307\u5B9A\u7248\u672C\u6216\u6807\u7B7E\uFF1Aepxing migrate . --packages-version __PACKAGES_VERSION__
|
|
204
204
|
\`\`\`
|
|
205
205
|
|
|
206
206
|
\u9ED8\u8BA4\u53EA\u8BFB\u9884\u89C8\uFF1B--apply \u8981\u6C42 Git \u5DE5\u4F5C\u6811\u5E72\u51C0\u3002\u5347\u7EA7\u4FDD\u7559\u4E1A\u52A1\u7EC4\u4EF6\u3001\u8DEF\u7531\u3001store \u548C\u81EA\u5B9A\u4E49\u914D\u7F6E\uFF0C\u53EA\u81EA\u52A8\u6539\u5199\u786E\u5B9A\u7684\u5BFC\u5165\u53CA\u5165\u53E3\u3002\u52A8\u6001\u53D6\u503C\u3001\u672A\u77E5\u65E7\u63A5\u53E3\u3001\u672A\u652F\u6301\u7684\u6E90\u7801\u8DEF\u5F84\u8FDB\u5165 MIGRATION-REPORT.md \u4EBA\u5DE5\u6E05\u5355\uFF1B\u5B58\u5728\u65E0\u6CD5\u5B8C\u6574\u5207\u6362\u7684\u65E7\u5165\u53E3\u65F6\uFF0C\u4E0D\u6DF7\u88C5\u4E24\u5957\u8FD0\u884C\u65F6\uFF0C\u5148\u4FDD\u7559\u65E7\u6A21\u5F0F\u5E76\u5B8C\u6210\u6E05\u5355\u518D\u5347\u7EA7\u3002
|
|
@@ -461,15 +461,15 @@ dist/
|
|
|
461
461
|
*.tgz
|
|
462
462
|
.DS_Store
|
|
463
463
|
.env*.local
|
|
464
|
-
`;s["README.md"]='# __NAME__\n\nepx-frame \u4EA7\u54C1\u8FDC\u7A0B\u5E93\u9879\u76EE\uFF08Vite \u5F62\u6001\uFF09\u3002\u5F00\u53D1\u6307\u5357\u89C1 epx-frame \u4ED3\u5E93 `docs/PROJECT-GUIDE.md`\u3002\n\n```bash\nnpm i # \u88C5\u4F9D\u8D56\nnpm run dev # \u672C\u5730\u5F00\u53D1\uFF08:8080\uFF0C\u8D77\u5B8C\u6574\u5E73\u53F0\uFF0C\u7528\u5E73\u53F0\u8D26\u53F7\u767B\u5F55\uFF09\nnpm run build:lib # \u6784\u5EFA\u8FDC\u7A0B\u5E93 lib/index.js + index.css\n```\n\n\u90E8\u7F72\uFF1Alib \u4EA7\u7269\u53D1\u5230\u6587\u4EF6\u670D\u52A1\uFF0C\u5E73\u53F0 FM_SYSTEM_WEBPACK \u7ED9\u672C\u7CFB\u7EDF\u914D js/css \u4E24\u6761 url\u3002\n`lib/index.deps.json`\uFF08\u4F9D\u8D56\u6E05\u5355\uFF09**\u8981\u548C index.js \u540C\u76EE\u5F55\u540C\u540D\u4E00\u8D77\u4F20**\uFF0C\u4F46**\u4E0D\u7528**\u5355\u72EC\u914D url\u2014\u2014\n\u5E73\u53F0\u6309 js url \u63A8\u5BFC\u5B83\uFF0C\u52A0\u8F7D\u672C\u5E93\u524D\u5148\u5907\u597D\u7528\u5230\u7684\u61D2\u52A0\u8F7D\u5E73\u53F0\u7EC4\u4EF6\uFF1B\u6F0F\u4F20\u53EA\u4F1A\u9759\u9ED8\u9000\u5316\u4E3A\u300C\u5907\u5168\u90E8\u300D\uFF08\u591A\u4E0B\u70B9 chunk\uFF09\u3002\n\u7EC4\u4EF6\u547D\u540D\uFF1A`epx-__NAME__-<\u57DF>-<\u540D>`\uFF08\u5168\u5E73\u53F0\u552F\u4E00\uFF09\uFF1B\u65B0\u589E .vue \u5373\u81EA\u52A8\u6CE8\u518C\u3002\n\n\u6846\u67B6\u5F15\u7528\u662F**\u6309\u9700\u5B50\u8DEF\u5F84**\u5F62\u6001\uFF08`epx-frame/core` + `epx-frame/components`\uFF0C\u89C1 src/main.js \u6CE8\u91CA\uFF09\uFF1A\nbusiness/designer/dashboard \u4E0D\u88C5\u4E5F\u4F1A\u5728\u8FD0\u884C\u65F6\u6309\u9700\u61D2\u52A0\u8F7D\uFF1B\u7EC4\u4EF6\u6E90\u7801\u91CC\u4E5F\u4ECE `epx-frame/components`\n\u5BFC\u5165\u7EE7\u627F\uFF08\u522B\u548C\u805A\u5408\u5165\u53E3 `epx-frame` \u6DF7\u7528\u2014\u2014\u4F1A\u51FA\u73B0\u4E24\u5957\u8FD0\u884C\u65F6\uFF09\u3002\n\n## \u56FE\u6807\n\n**461 \u4E2A\u5E73\u53F0\u56FE\u6807\u76F4\u63A5\u5199\u5C31\u884C\uFF0C\u96F6\u914D\u7F6E**\u2014\u2014\u5B83\u4EEC\u968F epx-frame \u53D1\u5E03\uFF0C\u62FF\u5230\u5373\u7528\uFF1A\n\n```vue\n<i class="el-icon-search"></i>\n<i class="epx-icon-shezhi"></i>\n```\n\n`font-size` \u63A7\u5236\u5927\u5C0F\u3001`color` \u63A7\u5236\u989C\u8272\uFF08\u5E95\u5C42\u662F CSS mask + currentColor\uFF09\u3002\n\n\u60F3\u7528\u5E73\u53F0\u6CA1\u6709\u7684\u56FE\u6807\uFF0C\u76F4\u63A5\u5199 [Remix Icon](https://remixicon.com) \u7684\u540D\u5B57\uFF1A\n\n```vue\n<i class="ri-rocket-line"></i>\n```\n\n**\u8981\u5148 `npm i -D @iconify-json/ri`**\uFF083229 \u4E2A\u56FE\u6807\u7684\u6570\u636E\u6E90\uFF0C\u53EA\u5728\u6784\u5EFA\u671F\u8BFB\u4E00\u6B21\uFF0C\u4E0D\u8FDB\u4EA7\u7269\uFF09\u3002\n`vite.config.mjs` \u91CC\u7684 `epxIcons()` \u4F1A\u626B\u6E90\u7801\u3001\u53EA\u4E3A**\u4F60\u5B9E\u9645\u7528\u5230\u7684**\u90A3\u51E0\u4E2A\u751F\u6210\u89C4\u5219\u2014\u2014\n\u5199 5 \u4E2A\u5C31\u662F 5 \u4E2A\u7684\u4F53\u79EF\uFF0C\u4E0D\u4F1A\u628A 3229 \u4E2A\u90FD\u6253\u8FDB\u53BB\u3002\u540D\u5B57\u62FC\u9519\u4E86\u4F1A\u5728\u6784\u5EFA\u65F6\u62A5\u51FA\u6765\uFF0C\u4E0D\u4F1A\u9759\u9ED8\u53D8\u7A7A\u767D\u3002\n\n\u56FE\u6807\u540D\u5B58\u5728**\u6570\u636E\u5E93**\u91CC\uFF08\u83DC\u5355\u56FE\u6807\u3001\u6309\u94AE iconCls\u3001\u9875\u9762\u914D\u7F6E\uFF09\u7684\u90A3\u4E9B\uFF0C\u6784\u5EFA\u671F\u626B\u4E0D\u5230\u2014\u2014\n\u4F46\u5E73\u53F0\u8FD0\u884C\u65F6\u4F1A\u6309\u9700\u8865\u9F50\uFF0C\u4F60\u4E0D\u7528\u505A\u4EFB\u4F55\u4E8B\u3002\u5B8C\u6574\u8BF4\u660E\u89C1 epx-frame \u4ED3\u5E93 `docs/guide/tools/icon.md`\u3002\n\n\u540E\u7AEF\u5730\u5740\u7B49\u73AF\u5883\u914D\u7F6E\u5728 `.env.development`\uFF1B\u672C\u673A\u60F3\u8FDE\u522B\u7684\u540E\u7AEF\uFF0C\u65B0\u5EFA `.env.development.local`\n\uFF08\u4E0D\u8FDB git\uFF09\u8986\u76D6\u5BF9\u5E94\u884C\uFF08\u5982 `IP=https://test.epxing.com:88/`\uFF09\uFF0C\u91CD\u542F dev \u751F\u6548\u3002\n\n\u521B\u5EFA\u547D\u4EE4\u5DF2\u5728 package.json \u5199\u5165 `runtime: "vue3"`\uFF0C\u5E76\u7531 src/index.js \u9ED8\u8BA4\u5BFC\u51FA\u540C\u540D\u6807\u8BC6\u3002\n\u6784\u5EFA\u90E8\u7F72\u540E\u5E73\u53F0\u6309\u5305\u9009\u62E9\u5B89\u88C5\u65B9\u5F0F\uFF1A`vue3` \u8D70\u539F\u751F\u5B89\u88C5\uFF0C`vue2` \u6216\u672A\u6807\u8BC6\u7684\u5176\u5B83\u5E93\u7EE7\u7EED\u4F7F\u7528\u517C\u5BB9\u6865\u3002\n';function w({name:
|
|
465
|
-
`).pop();c="file:./"+u,console.log(" \u2713 "+u)}else c="^"+JSON.parse(l.readFileSync(m.join(f,"package.json"),"utf8")).version,console.log(` epx-frame \u4F9D\u8D56 \u2192 ${c}\uFF08\u5168\u5C40\u5B89\u88C5\u6A21\u5F0F\uFF1Bnpm i \u65F6\u9700 --registry \u516C\u53F8\u6E90\uFF09`);let E=t?v(s,t):s;for(let[x,u]of Object.entries(E)){let g=m.join(
|
|
466
|
-
\u2713 \u9879\u76EE\u5DF2\u751F\u6210\uFF1A${
|
|
467
|
-
cd "${
|
|
464
|
+
`;s["README.md"]='# __NAME__\n\nepx-frame \u4EA7\u54C1\u8FDC\u7A0B\u5E93\u9879\u76EE\uFF08Vite \u5F62\u6001\uFF09\u3002\u5F00\u53D1\u6307\u5357\u89C1 epx-frame \u4ED3\u5E93 `docs/PROJECT-GUIDE.md`\u3002\n\n```bash\nnpm i # \u88C5\u4F9D\u8D56\nnpm run dev # \u672C\u5730\u5F00\u53D1\uFF08:8080\uFF0C\u8D77\u5B8C\u6574\u5E73\u53F0\uFF0C\u7528\u5E73\u53F0\u8D26\u53F7\u767B\u5F55\uFF09\nnpm run build:lib # \u6784\u5EFA\u8FDC\u7A0B\u5E93 lib/index.js + index.css\n```\n\n\u90E8\u7F72\uFF1Alib \u4EA7\u7269\u53D1\u5230\u6587\u4EF6\u670D\u52A1\uFF0C\u5E73\u53F0 FM_SYSTEM_WEBPACK \u7ED9\u672C\u7CFB\u7EDF\u914D js/css \u4E24\u6761 url\u3002\n`lib/index.deps.json`\uFF08\u4F9D\u8D56\u6E05\u5355\uFF09**\u8981\u548C index.js \u540C\u76EE\u5F55\u540C\u540D\u4E00\u8D77\u4F20**\uFF0C\u4F46**\u4E0D\u7528**\u5355\u72EC\u914D url\u2014\u2014\n\u5E73\u53F0\u6309 js url \u63A8\u5BFC\u5B83\uFF0C\u52A0\u8F7D\u672C\u5E93\u524D\u5148\u5907\u597D\u7528\u5230\u7684\u61D2\u52A0\u8F7D\u5E73\u53F0\u7EC4\u4EF6\uFF1B\u6F0F\u4F20\u53EA\u4F1A\u9759\u9ED8\u9000\u5316\u4E3A\u300C\u5907\u5168\u90E8\u300D\uFF08\u591A\u4E0B\u70B9 chunk\uFF09\u3002\n\u7EC4\u4EF6\u547D\u540D\uFF1A`epx-__NAME__-<\u57DF>-<\u540D>`\uFF08\u5168\u5E73\u53F0\u552F\u4E00\uFF09\uFF1B\u65B0\u589E .vue \u5373\u81EA\u52A8\u6CE8\u518C\u3002\n\n\u6846\u67B6\u5F15\u7528\u662F**\u6309\u9700\u5B50\u8DEF\u5F84**\u5F62\u6001\uFF08`epx-frame/core` + `epx-frame/components`\uFF0C\u89C1 src/main.js \u6CE8\u91CA\uFF09\uFF1A\nbusiness/designer/dashboard \u4E0D\u88C5\u4E5F\u4F1A\u5728\u8FD0\u884C\u65F6\u6309\u9700\u61D2\u52A0\u8F7D\uFF1B\u7EC4\u4EF6\u6E90\u7801\u91CC\u4E5F\u4ECE `epx-frame/components`\n\u5BFC\u5165\u7EE7\u627F\uFF08\u522B\u548C\u805A\u5408\u5165\u53E3 `epx-frame` \u6DF7\u7528\u2014\u2014\u4F1A\u51FA\u73B0\u4E24\u5957\u8FD0\u884C\u65F6\uFF09\u3002\n\n## \u56FE\u6807\n\n**461 \u4E2A\u5E73\u53F0\u56FE\u6807\u76F4\u63A5\u5199\u5C31\u884C\uFF0C\u96F6\u914D\u7F6E**\u2014\u2014\u5B83\u4EEC\u968F epx-frame \u53D1\u5E03\uFF0C\u62FF\u5230\u5373\u7528\uFF1A\n\n```vue\n<i class="el-icon-search"></i>\n<i class="epx-icon-shezhi"></i>\n```\n\n`font-size` \u63A7\u5236\u5927\u5C0F\u3001`color` \u63A7\u5236\u989C\u8272\uFF08\u5E95\u5C42\u662F CSS mask + currentColor\uFF09\u3002\n\n\u60F3\u7528\u5E73\u53F0\u6CA1\u6709\u7684\u56FE\u6807\uFF0C\u76F4\u63A5\u5199 [Remix Icon](https://remixicon.com) \u7684\u540D\u5B57\uFF1A\n\n```vue\n<i class="ri-rocket-line"></i>\n```\n\n**\u8981\u5148 `npm i -D @iconify-json/ri`**\uFF083229 \u4E2A\u56FE\u6807\u7684\u6570\u636E\u6E90\uFF0C\u53EA\u5728\u6784\u5EFA\u671F\u8BFB\u4E00\u6B21\uFF0C\u4E0D\u8FDB\u4EA7\u7269\uFF09\u3002\n`vite.config.mjs` \u91CC\u7684 `epxIcons()` \u4F1A\u626B\u6E90\u7801\u3001\u53EA\u4E3A**\u4F60\u5B9E\u9645\u7528\u5230\u7684**\u90A3\u51E0\u4E2A\u751F\u6210\u89C4\u5219\u2014\u2014\n\u5199 5 \u4E2A\u5C31\u662F 5 \u4E2A\u7684\u4F53\u79EF\uFF0C\u4E0D\u4F1A\u628A 3229 \u4E2A\u90FD\u6253\u8FDB\u53BB\u3002\u540D\u5B57\u62FC\u9519\u4E86\u4F1A\u5728\u6784\u5EFA\u65F6\u62A5\u51FA\u6765\uFF0C\u4E0D\u4F1A\u9759\u9ED8\u53D8\u7A7A\u767D\u3002\n\n\u56FE\u6807\u540D\u5B58\u5728**\u6570\u636E\u5E93**\u91CC\uFF08\u83DC\u5355\u56FE\u6807\u3001\u6309\u94AE iconCls\u3001\u9875\u9762\u914D\u7F6E\uFF09\u7684\u90A3\u4E9B\uFF0C\u6784\u5EFA\u671F\u626B\u4E0D\u5230\u2014\u2014\n\u4F46\u5E73\u53F0\u8FD0\u884C\u65F6\u4F1A\u6309\u9700\u8865\u9F50\uFF0C\u4F60\u4E0D\u7528\u505A\u4EFB\u4F55\u4E8B\u3002\u5B8C\u6574\u8BF4\u660E\u89C1 epx-frame \u4ED3\u5E93 `docs/guide/tools/icon.md`\u3002\n\n\u540E\u7AEF\u5730\u5740\u7B49\u73AF\u5883\u914D\u7F6E\u5728 `.env.development`\uFF1B\u672C\u673A\u60F3\u8FDE\u522B\u7684\u540E\u7AEF\uFF0C\u65B0\u5EFA `.env.development.local`\n\uFF08\u4E0D\u8FDB git\uFF09\u8986\u76D6\u5BF9\u5E94\u884C\uFF08\u5982 `IP=https://test.epxing.com:88/`\uFF09\uFF0C\u91CD\u542F dev \u751F\u6548\u3002\n\n\u521B\u5EFA\u547D\u4EE4\u5DF2\u5728 package.json \u5199\u5165 `runtime: "vue3"`\uFF0C\u5E76\u7531 src/index.js \u9ED8\u8BA4\u5BFC\u51FA\u540C\u540D\u6807\u8BC6\u3002\n\u6784\u5EFA\u90E8\u7F72\u540E\u5E73\u53F0\u6309\u5305\u9009\u62E9\u5B89\u88C5\u65B9\u5F0F\uFF1A`vue3` \u8D70\u539F\u751F\u5B89\u88C5\uFF0C`vue2` \u6216\u672A\u6807\u8BC6\u7684\u5176\u5B83\u5E93\u7EE7\u7EED\u4F7F\u7528\u517C\u5BB9\u6865\u3002\n';function w({name:e,dir:n,epxFrameSpec:o,packagesVersion:t,cliVersion:p="0.5.0-beta.5"}){let a=e.toLowerCase(),r=e;if(!/^[a-z][a-z0-9-]*$/i.test(e))throw new Error(`\u4EA7\u54C1\u540D\u300C${e}\u300D\u9700\u4EE5\u5B57\u6BCD\u5F00\u5934\uFF0C\u4EC5\u542B\u5B57\u6BCD/\u6570\u5B57/-`);let i=m.resolve(n);if(t&&o)throw new Error("--packages-version \u4E0E --epx-frame \u4E0D\u80FD\u540C\u65F6\u6307\u5B9A");if(t&&!/^(?:[~^]?\d+\.\d+\.\d+(?:-[\w.-]+)?|[a-z][\w.-]*)$/.test(t))throw new Error("--packages-version \u9700\u8981 npm \u7248\u672C\u3001\u7248\u672C\u8303\u56F4\u6216\u6807\u7B7E");if(l.existsSync(i)&&l.readdirSync(i).length)throw new Error(`\u76EE\u6807\u76EE\u5F55\u975E\u7A7A\uFF1A${i}`);let c=o;if(l.mkdirSync(i,{recursive:!0}),!c&&!t)if(l.existsSync(m.join(f,"vite.config.mjs"))){if(!l.existsSync(m.join(f,"lib/epx-frame.common.js")))throw new Error("frame \u4ED3\u5E93 lib/ \u672A\u6784\u5EFA\u2014\u2014\u5148\u5728 frame-vue3 \u8DD1 pnpm build:component\uFF0C\u6216\u7528 --epx-frame \u6307\u5B9A\u6765\u6E90");console.log(" \u6253\u5305 epx-frame tarball\uFF08npm pack\uFF09\u2026");let u=b("npm pack --pack-destination "+JSON.stringify(i),{cwd:f,encoding:"utf8"}).trim().split(`
|
|
465
|
+
`).pop();c="file:./"+u,console.log(" \u2713 "+u)}else c="^"+JSON.parse(l.readFileSync(m.join(f,"package.json"),"utf8")).version,console.log(` epx-frame \u4F9D\u8D56 \u2192 ${c}\uFF08\u5168\u5C40\u5B89\u88C5\u6A21\u5F0F\uFF1Bnpm i \u65F6\u9700 --registry \u516C\u53F8\u6E90\uFF09`);let E=t?v(s,t):s;for(let[x,u]of Object.entries(E)){let g=m.join(i,x.replace("__DIRNAME__",r));l.mkdirSync(m.dirname(g),{recursive:!0}),l.writeFileSync(g,u.replaceAll("__NAME__",a).replaceAll("__DIRNAME__",r).replaceAll("__EPX_FRAME__",c||"").replaceAll("__PACKAGES_VERSION__",t||"").replaceAll("__CLI_VERSION__",p))}return b('git init -q && git add -A && git commit -qm "epx-create: \u9879\u76EE\u521D\u59CB\u5316\uFF08Vite \u5F62\u6001\u811A\u624B\u67B6\uFF09"',{cwd:i}),console.log(`
|
|
466
|
+
\u2713 \u9879\u76EE\u5DF2\u751F\u6210\uFF1A${i}`),t?(console.log(` npm install --prefix "${i}" --registry https://registry.npmjs.org/
|
|
467
|
+
cd "${i}"
|
|
468
468
|
npm run dev # :8080
|
|
469
469
|
npx epxing lib
|
|
470
|
-
\u8BE6\u7EC6\u4F7F\u7528\uFF1APRODUCT-GUIDE.md`),
|
|
471
|
-
cd ${
|
|
470
|
+
\u8BE6\u7EC6\u4F7F\u7528\uFF1APRODUCT-GUIDE.md`),i):(console.log(`\x1B[1m\u540E\u7EED\u6B65\u9AA4\uFF1A\x1B[0m
|
|
471
|
+
cd ${i}
|
|
472
472
|
npm i
|
|
473
473
|
npm run dev # :8080\uFF0C\u8D77\u5B8C\u6574\u5E73\u53F0\uFF08\u7528\u5E73\u53F0\u8D26\u53F7\u767B\u5F55\u540E\u5F00\u53D1\u8C03\u8BD5\uFF09
|
|
474
474
|
npm run build:lib # \u51FA lib/index.js + index.css + index.deps.json\uFF08\u4E09\u4E2A\u540C\u76EE\u5F55\u4E00\u8D77\u4F20\uFF09\u2192 \u90E8\u7F72 FM_SYSTEM_WEBPACK
|
|
475
|
-
\u7EC4\u4EF6\u5199\u5728 src/${r}/\uFF08\u793A\u4F8B DemoList.vue \u8DD1\u901A\u540E\u53EF\u5220\uFF09\uFF1B\u6307\u5357\uFF1Aframe \u4ED3\u5E93 docs/PROJECT-GUIDE.md`),
|
|
475
|
+
\u7EC4\u4EF6\u5199\u5728 src/${r}/\uFF08\u793A\u4F8B DemoList.vue \u8DD1\u901A\u540E\u53EF\u5220\uFF09\uFF1B\u6307\u5357\uFF1Aframe \u4ED3\u5E93 docs/PROJECT-GUIDE.md`),i)}d(w,"scaffold");var R=process.argv[1]&&import.meta.url===j(process.argv[1]).href;if(R){let e=process.argv.slice(2),n=d(r=>{let i=e.indexOf(r);if(i===-1)return null;let c=e[i+1];return e.splice(i,2),c},"take"),o=n("--dir"),t=n("--epx-frame"),p=n("--packages-version"),a=e.find(r=>!r.startsWith("-"));a||(console.error("\u7528\u6CD5\uFF1Anode tools/epx-create/scaffold.mjs <\u4EA7\u54C1\u540D> [--dir <\u76EE\u5F55>] [--epx-frame <spec>]"),process.exit(1));try{w({name:a,dir:o||m.resolve(f,"..","product",a),epxFrameSpec:t,packagesVersion:p})}catch(r){console.error("\u2717 "+r.message),process.exit(1)}}export{s as TEMPLATES,w as scaffold};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{d as h}from"../chunks/
|
|
2
|
+
import{d as h}from"../chunks/EIUEHK6C.mjs";import{a as g}from"../chunks/7YE2UHC6.mjs";import{b as x}from"../chunks/U27ZPQAM.mjs";import"../chunks/7NAADJFP.mjs";import{a as l}from"../chunks/J7B2EWKH.mjs";import r from"node:fs";import c from"node:path";var i=process.argv.slice(2).find(e=>!e.startsWith("--"));(!i||!r.existsSync(i))&&(console.error("\u7528\u6CD5\uFF1Anode tools/epx-migrate/detect-vue3-risks.mjs <\u9879\u76EE\u76EE\u5F55>"),process.exit(1));var p=[],y=l(e=>{for(let s of r.readdirSync(e,{withFileTypes:!0})){let n=c.join(e,s.name);s.isDirectory()&&!/node_modules|\.git|^lib$|^dist$/.test(s.name)?y(n):/\.(?:vue|[cm]?js|jsx|ts|tsx)$/.test(s.name)&&p.push(n)}},"walk"),f=c.join(i,"src");r.existsSync(f)&&y(f);var o=[],a=l(e=>r.existsSync(c.join(i,e))?r.readFileSync(c.join(i,e),"utf8"):"","readIf"),$=a("package.json");$&&h(a("src/main.js"),a("src/App.vue"),JSON.parse($).name)&&o.push({file:"src/main.js",rule:"R4-platform-entry",detail:"\u65E7 CLI \u8BA1\u6570\u6B22\u8FCE\u9875\u5C1A\u672A\u63A5\u5165\u5E73\u53F0\u7CFB\u7EDF\uFF1B\u4F7F\u7528\u65B0\u7248 epxing upgrade . \u9884\u89C8\uFF0C\u518D\u52A0 --apply \u4FEE\u590D\u539F\u59CB\u5165\u53E3\u3002\u81EA\u5B9A\u4E49\u5165\u53E3\u4FDD\u7559\uFF0C\u6309\u4EA7\u54C1\u7528\u9014\u6838\u5BF9\u5E73\u53F0\u8DEF\u7531\u548C\u63D2\u4EF6\u3002"});for(let e of p){let s=r.readFileSync(e,"utf8"),n=c.relative(i,e),m=g(s,{filename:e});for(let t of m.fixes)o.push({file:`${n}:${t.line}`,rule:"R2-date-format",detail:`${t.before} \u2192 ${t.after}\uFF1B\u6267\u884C\u65E5\u671F\u683C\u5F0F\u4FEE\u590D\u5668 --apply\uFF1B\u539F\u751FVue3\u5305\u4E0D\u8D70\u65E7render\u57AB\u7247\uFF08F21\uFF09`});for(let t of m.warnings)o.push({file:n,rule:"R2-date-format\u5F85\u8FFD\u8E2A",detail:t});let S=/<template[>\s]/.test(s),d=/\bextends:\s*(\w+)/.exec(s),u=(/<style[^>]*\bscoped\b[^>]*>([\s\S]*?)<\/style>/.exec(s)||[])[1]||"";if(u&&d&&!S){let t=u.match(/^[ \t]*\.[\w-][^{}\n]*\{/gm)||[];t.length&&o.push({file:n,rule:"R1-scoped\u5F85\u590D\u6838",detail:`extends ${d[1]} + <style scoped> + \u65E0 <template>\uFF0C\u4E14 scoped \u5757\u542B ${t.length} \u4E2A\u88F8\u7C7B\u9009\u62E9\u5668\uFF08\u5982 ${t[0].trim()}\uFF09\u3002\u4EC5\u63D0\u793A\u5F85\u590D\u6838\uFF0C\u4E0D\u8BC1\u660E\u6837\u5F0F\u5931\u6548\uFF1B\u5148\u4FDD\u7559 scoped\uFF0C\u7528\u6700\u7EC8\u4EA7\u7269\u9A8C\u8BC1 DOM \u4E0E CSS \u5339\u914D\u3002\u82E5\u786E\u9700\u53BB scoped\uFF0C\u987B\u540C\u65F6\u5B8C\u6210\u552F\u4E00\u547D\u540D\u7A7A\u95F4\u9694\u79BB\uFF0C\u5E76\u590D\u6D4B\u7EC4\u4EF6\u5916\u540C\u540D\u5143\u7D20\u548C\u5176\u4ED6\u9875\u9762\uFF1B\u4E0D\u8981\u4E3A\u6D88\u9664\u544A\u8B66\u6279\u91CF\u6539\u6837\u5F0F`})}}if(r.existsSync(f))for(let e of x(i)){for(let s of e.fixes)o.push({file:`${e.file}:${s.line}`,rule:"R3-theme",detail:`${s.before} \u2192 ${s.after}\uFF1B\u6267\u884C epxing theme <\u76EE\u5F55> --apply\uFF0C\u6216\u5728\u8FC1\u79FB\u65F6\u81EA\u52A8\u9002\u914D\uFF08E2\uFF09`});for(let s of e.warnings)o.push({file:e.file,rule:"R3-theme\u5F85\u590D\u6838",detail:s})}console.log(`[detect-vue3-risks] \u626B\u63CF ${p.length} \u4E2A\u7EC4\u4EF6/\u811A\u672C\u6587\u4EF6\u53CA src \u6837\u5F0F\u6587\u4EF6`);o.length===0&&(console.log(" \u2713 \u672A\u53D1\u73B0\u5DF2\u77E5\u9759\u6001\u98CE\u9669\u6A21\u5F0F"),process.exit(0));console.log(` \u26A0 \u53D1\u73B0 ${o.length} \u5904\u5F85\u590D\u6838\u98CE\u9669\u6A21\u5F0F\uFF08\u9759\u6001\u547D\u4E2D\u4E0D\u4EE3\u8868\u8FD0\u884C\u65F6\u5DF2\u5931\u6548\uFF09\uFF1A`);for(let e of o)console.log(` [${e.rule}] ${e.file}
|
|
3
3
|
${e.detail}`);process.exit(2);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{a as ce,b as je,c as we,d as Pe,e as Ae}from"../chunks/
|
|
2
|
+
import{a as ce,b as je,c as we,d as Pe,e as Ae}from"../chunks/EIUEHK6C.mjs";import{a as Ce}from"../chunks/7YE2UHC6.mjs";import{a as Fe}from"../chunks/U27ZPQAM.mjs";import"../chunks/7NAADJFP.mjs";import{a as l,c as pe,d as le}from"../chunks/J7B2EWKH.mjs";var Ie=pe(le(),1);function Te(e){let t=[],n=[],s=l(a=>a.key?.name||a.key?.value,"keyOf");function r(a){if(a?.type==="ConditionalExpression"){r(a.consequent),r(a.alternate);return}if(a?.type!=="ObjectExpression"){a&&!(a.type==="BooleanLiteral"&&!a.value)&&n.push("build \u4E3A\u52A8\u6001\u914D\u7F6E\uFF0C\u8BF7\u6838\u5BF9\u5E93\u5206\u652F copyPublicDir \u4E3A false\uFF0C\u5E94\u7528\u5206\u652F\u4FDD\u7559\u539F\u503C\u3002");return}let c=a.properties.find(m=>m.type==="ObjectProperty"&&s(m)==="lib");if(!c||c.value.type==="BooleanLiteral"&&!c.value.value)return;if(c.value.type!=="ObjectExpression"){n.push("lib \u4E3A\u52A8\u6001\u914D\u7F6E\uFF0C\u8BF7\u6838\u5BF9\u5E93\u5206\u652F copyPublicDir \u4E3A false\uFF0C\u907F\u514D\u5F71\u54CD\u5E94\u7528\u6784\u5EFA\u3002");return}if(a.properties.some(m=>m.type==="SpreadElement")){n.push("\u5E93\u6784\u5EFA\u5305\u542B\u5C55\u5F00\u914D\u7F6E\uFF0C\u8BF7\u6838\u5BF9\u6700\u7EC8 build.copyPublicDir \u4E3A false\u3002");return}let p=a.properties.find(m=>s(m)==="copyPublicDir");p?p.type!=="ObjectProperty"||p.value.type!=="BooleanLiteral"?n.push("copyPublicDir \u4E3A\u52A8\u6001\u914D\u7F6E\uFF0C\u8BF7\u5728\u5E93\u6784\u5EFA\u5206\u652F\u5173\u95ED public \u590D\u5236\u3002"):p.value.value&&t.push({start:p.value.start,end:p.value.end,text:"false"}):t.push({start:a.start+1,end:a.start+1,text:" copyPublicDir: false,"})}l(r,"branch");function o(a){if(!(!a||typeof a!="object")){a.type==="ObjectProperty"&&s(a)==="build"&&r(a.value);for(let[c,p]of Object.entries(a))c!=="loc"&&(Array.isArray(p)?p.forEach(o):p&&typeof p=="object"&&o(p))}}l(o,"walk");try{o((0,Ie.parse)(e,{sourceType:"module",plugins:["typescript","importAttributes"]}))}catch(a){n.push("Vite \u914D\u7F6E\u65E0\u6CD5\u89E3\u6790\uFF0C\u9700\u6838\u5BF9\u5E93\u6784\u5EFA copyPublicDir\uFF1A"+a.message)}let i=e;for(let a of t.sort((c,p)=>p.start-c.start))i=i.slice(0,a.start)+a.text+i.slice(a.end);return{src:i,warnings:n}}l(Te,"fixLibraryPublicCopy");import v from"node:fs";import ke from"node:os";import w from"node:path";import{execSync as xe,spawnSync as mt}from"node:child_process";import{fileURLToPath as Xt}from"node:url";var te={"epx-frame":{target:"^5.3.0",note:"Vue3 \u7248 epx-frame\uFF08\u53D1\u5E03\u540E\u586B\u5B9E\u9645\u7248\u672C\uFF1B\u89C1 docs/build-and-publish.md \xA7\u2461\uFF09"},"@vue/cli-service":{target:"~5.0.8",dev:!0},"@vue/cli-plugin-babel":{target:"~5.0.8",dev:!0},"@vue/cli-plugin-eslint":{target:"~5.0.8",dev:!0},"@vue/cli-plugin-router":{target:"~5.0.8",dev:!0},"@vue/cli-plugin-vuex":{target:"~5.0.8",dev:!0},"@vue/cli-plugin-pwa":{target:"~5.0.8",dev:!0},"vue-template-compiler":{target:null,note:"Vue3 \u65E0\u6B64\u5305 \u2192 @vue/compiler-sfc\uFF08\u968F vue \u5305\u5185\u7F6E\uFF09"},"eslint-plugin-vue":{target:"^9.33.0",dev:!0},eslint:{target:"^8.57.0",dev:!0,note:"6\u21928 \u5BF9\u9F50\u5E73\u53F0\uFF08plugin-vue9/cli-plugin-eslint5 \u7684 peer\uFF09"},"babel-eslint":{target:null,dev:!0,note:"\u5F03\u7528 \u2192 @babel/eslint-parser\uFF08lint \u914D\u7F6E\u91CD\u5EFA\u65F6\u6309\u9700\u52A0\uFF09"},"@vue/eslint-config-standard":{target:null,dev:!0,note:"v5 \u7ED1 eslint6\uFF1Blint \u914D\u7F6E\u6309\u5E73\u53F0 .eslintrc \u91CD\u5EFA"},"eslint-plugin-import":{target:null,dev:!0,note:"\u8001 standard \u5957\u4EF6\u6210\u5458\uFF0C\u968F lint \u914D\u7F6E\u91CD\u5EFA"},"eslint-plugin-node":{target:null,dev:!0,note:"\u540C\u4E0A"},"eslint-plugin-promise":{target:null,dev:!0,note:"\u540C\u4E0A"},"eslint-plugin-standard":{target:null,dev:!0,note:"\u540C\u4E0A"},"element-ui":{target:null,note:"\u2192 \u5E73\u53F0\u8FD0\u884C\u65F6\u63D0\u4F9B element-plus\uFF1B\u9879\u76EE\u5185 import \u5904\u4EBA\u5DE5\u6E05\u7406"},"babel-plugin-component":{target:null,dev:!0,note:"element-ui \u6309\u9700\u5F15\u5165\u63D2\u4EF6\uFF0C\u5F03\u7528\uFF08babel.config \u7531\u5DE5\u5177\u540C\u6B65\u6E05\u7406\uFF09"},"vue-cli-plugin-element":{target:null,dev:!0,note:"element-ui \u7684 vue-cli \u63D2\u4EF6\uFF0C\u5F03\u7528"},"babel-plugin-import":{target:null,dev:!0,note:"vant \u6309\u9700\u5F15\u5165\uFF0C\u5F03\u7528\uFF08babel.config \u7531\u5DE5\u5177\u540C\u6B65\u6E05\u7406\uFF09"},vue:{target:"^3.5.13",note:"\u82E5\u9879\u76EE\u76F4\u63A5\u4F9D\u8D56 vue"},"vue-router":{target:"^4.6.0"},vuex:{target:"^4.1.0"}},Le={webpack:"^5.97.1","webpack-cli":"^5.1.4","vue-loader":"^17.4.2",vue:"^3.5.13","babel-loader":"^9.2.1","@babel/core":"^7.26.0","@babel/preset-env":"^7.26.0","css-loader":"^6.11.0","mini-css-extract-plugin":"^2.9.2","sass-loader":"^13.3.3","clean-webpack-plugin":"^4.0.0","url-loader":"^4.1.1","file-loader":"^6.2.0"},ue={"gogocode-cli":"^0.2.28","gogocode-plugin-vue":"^1.0.29","gogocode-plugin-element":"^0.0.3"},De={"@vue/babel-plugin-jsx":"^1.2.5"},Me={"@element-plus/icons-vue":"^2.3.1"},me={signature_pad:"^5.1.3",sortablejs:"^1.15.7",moment:"^2.30.1","js-cookie":"^3.0.5",axios:"^1.18.1","lodash-es":"^4.17.21",lodash:"^4.17.21"},Re=['externals \u5DF2\u7531\u5DE5\u5177\u8FFD\u52A0 { vue: window.frame.Vue }\u2014\u2014Vue3 \u7F16\u8BD1\u4EA7\u7269 import "vue"\uFF0C\u8FD0\u884C\u65F6\u7531\u5E73\u53F0\u63D0\u4F9B\uFF0C\u522B\u6253\u8FDB bundle',"DefinePlugin \u7684 process.env \u4FDD\u7559\uFF08IP/BASE_* \u7531\u90E8\u7F72\u73AF\u5883\u6CE8\u5165\uFF09","browserslist/babel targets \u82E5\u542B ie\uFF08Vue3 \u4E0D\u652F\u6301 IE\uFF09\uFF0C\u5EFA\u8BAE\u66F4\u65B0\u4E3A\u73B0\u4EE3\u6D4F\u89C8\u5668"],ne={"vue-orgchart-direction":{note:"\u7EC4\u7EC7\u67B6\u6784\u56FE\uFF08Vue2 \u7EC4\u4EF6\u5E93\uFF0C\u65E0 Vue3 \u7248\uFF09\u3002Vue3 \u4EA7\u7269\u8FD0\u884C\u65F6\u62A5 _c undefined\u3002\u5EFA\u8BAE\u6362 Vue3 \u517C\u5BB9\u7684\u7EC4\u7EC7\u67B6\u6784\u56FE\u5E93\uFF0C\u6216\u7528 SVG/canvas \u81EA\u5B9E\u73B0\u3002"},"vue-bpmn":{note:"BPMN \u6D41\u7A0B\u56FE\u7684 Vue2 \u5C01\u88C5\u7EC4\u4EF6\uFF0C\u65E0 Vue3 \u7248\u3002\u5EFA\u8BAE\u76F4\u63A5\u7528\u6846\u67B6\u65E0\u5173\u7684 bpmn-js \u81EA\u5C01\u88C5\uFF0C\u6216\u627E Vue3 \u5C01\u88C5\u3002"},"vue-quill-editor":{note:"\u5BCC\u6587\u672C\u7F16\u8F91\u5668\uFF08Vue2 \u7248\uFF0C3.x \u5DF2\u505C\u66F4\u672A\u51FA Vue3\uFF09\u3002Vue3 \u6362 @vueup/vue-quill\u3002"},vuedraggable:{note:"\u62D6\u62FD\u6392\u5E8F\uFF1A2.x \u4E3A Vue2 \u7248\u3002Vue3 \u7528\u540C\u540D vuedraggable@4\uFF08\u82E5\u9879\u76EE\u5DF2\u5347\u5230 4.x \u5219\u5FFD\u7565\u672C\u6761\uFF09\u3002"}};var kt=/import\.meta\.glob\(\s*(['"])([^'"]+)\1\s*,\s*\{\s*eager\s*:\s*true\s*\}\s*\)/;function Oe(e){let t=kt.exec(String(e||""));return t?t[2]:null}l(Oe,"extractGlobPattern");function St(e){let t=String(e||""),n=t.includes("vite-plugin-lazy-lib"),s=/lazyLib\s*\(/.test(t);return n&&s?"present":n||s?"half":"absent"}l(St,"lazyLibState");var Ve=l(e=>/'/.test(e)?JSON.stringify(e):`'${e}'`,"q"),Et=`import lazyLib from 'epx-frame/build/vite-plugin-lazy-lib.mjs'
|
|
3
3
|
`,$t=/^([ \t]*)frameDeps\s*\(\s*\)\s*,?[^\n]*$/m;function Ne(e,{glob:t,pkgName:n}){let s=String(e||""),r=St(s);if(r!=="absent")return{src:s,status:r};let o=$t.exec(s);if(!o)return{src:s,status:"no-anchor"};let i=o[1],a=`
|
|
4
4
|
${i}// \u6807\u51C6 build:lib \u9ED8\u8BA4\u61D2\u52A0\u8F7D\uFF1Bnpm run build:lib:full \u663E\u5F0F\u5168\u91CF\u6784\u5EFA\u3002
|
|
5
5
|
${i}// \u90E8\u7F72\u65F6\u5FC5\u987B\u4E0A\u4F20\u6574\u4E2A lib/ \u76EE\u5F55\uFF08\u4E0D\u518D\u662F index.js + index.css \u4E24\u4E2A\u6587\u4EF6\uFF09\u3002
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@epxing/cli",
|
|
3
|
-
"version": "0.5.0-beta.
|
|
3
|
+
"version": "0.5.0-beta.15",
|
|
4
4
|
"description": "EPX 交互式工程开发、服务启动、构建、Vue3 迁移及技能安装工具",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -13,12 +13,6 @@
|
|
|
13
13
|
"engines": {
|
|
14
14
|
"node": ">=18"
|
|
15
15
|
},
|
|
16
|
-
"scripts": {
|
|
17
|
-
"build": "node build.mjs",
|
|
18
|
-
"test": "node --test test/cli.test.mjs test/platform-version.test.mjs test/lib-build-template.test.mjs test/library-public-config.test.mjs",
|
|
19
|
-
"prepack": "node build.mjs",
|
|
20
|
-
"prepublishOnly": "node ../../build/guard-publish-registry.mjs"
|
|
21
|
-
},
|
|
22
16
|
"devDependencies": {
|
|
23
17
|
"@babel/parser": "7.29.3",
|
|
24
18
|
"@vue/compiler-dom": "3.5.39",
|
|
@@ -35,5 +29,9 @@
|
|
|
35
29
|
"default": "./dist/vite.mjs"
|
|
36
30
|
},
|
|
37
31
|
"./package.json": "./package.json"
|
|
32
|
+
},
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "node build.mjs",
|
|
35
|
+
"test": "node --test test/cli.test.mjs test/platform-version.test.mjs test/lib-build-template.test.mjs test/library-public-config.test.mjs"
|
|
38
36
|
}
|
|
39
|
-
}
|
|
37
|
+
}
|