SuperAPI AI 工具集

enonic-content-migration

通用与其它

查看项目

更新于 10-15 23:57

技能介绍

用途:为 Enonic XP 项目生成批量内容操作脚本,覆盖批量创建、批量更新、批量删除、迁移、查询与聚合,以及需要进度上报的长时间任务。

主要能力:识别工作区中的 Enonic XP 项目标记(build.gradle 中的 com.enonic.xp 依赖、src/main/resources/ 结构、gradle.properties 中的 xpVersion),确定目标 XP 版本以选择正确 API;按操作类型选择 lib-content(CMS 内容、发布/取消发布、内容类型校验)或 lib-node(底层节点、自定义仓库、绕过内容类型校验);用 lib-context 指定 draft/master 分支与 role:system.admin 权限;用 NoQL 或 DSL 构建查询,支持 contentTypes 过滤、instant()/dateTime() 与 range() 日期范围、fulltext() 全文检索、_path LIKE 路径范围、exists/notExists/hasValue 过滤及聚合;用 start/count 分页批量处理,count 建议 50–200,contentLib.create() 可设 refresh: false,contentLib.modify() 用 editor 回调,contentLib.publish() 按 50–100 分组;超过约 100 项时用 lib-task 包装任务控制器并上报进度。

使用方式:先运行 node scripts/find-enonic-targets.mjs . 扫描项目标记;阅读 references/migration-reference.md、references/examples.md、references/troubleshooting.md 及 assets 下的批量更新与任务迁移模板;模板为 TypeScript/ESM 语法,部署到 XP 运行时需改为 CommonJS 的 .js 文件。发布时 XP < 7.12 需传 sourceBranch: 'draft' 与 targetBranch: 'master',7.12+ 忽略这两个参数;批量发布设 includeDependencies: false;比较 draft 与 master 用 repo.diff()。

适用场景:从 JSON、CSV、API 导入内容,按条件批量修改或删除,跨路径/站点/环境迁移与转换,以及内容查询与聚合分析。

限制:仅面向 Enonic XP 内容操作,未检测到 XP 项目时应停止;NoQL 查询中 _path 含内部 /content/ 前缀,而结果 hit._path 不含,需自行补前缀;日期比较缺少 instant() 包装是查询零结果的常见原因;发布或修改出现 AccessDeniedException 需通过 lib-context 加入 role:system.admin。其余细节暂未提供。