@minij/cli
v0.0.9
Published
minij 一键建站方案 - 本地触发端
Readme
@minij/cli
minij 一键建站方案的本地触发端,主要面向 AI 助手调用,负责本地项目初始化、模板替换,并协调 minij-orchestrator-server 完成 GitLab 仓库创建和 CI/CD 变量注入。
注意:需在minij 608 内网中使用。 orchestrator 服务固定部署在
http://192.168.50.41:8888,不在内网无法连接。
安装
npm install -g @minij/cli
# 或
pnpm add -g @minij/cli前置要求
- Node.js >= 18
- pnpm
- Git
- SSH 公钥已配置到
git.minij.com - 处于minij 608 内网环境
命令
minij create <name>
一键创建 BI 项目或纯前端项目:克隆模板 → 替换项目名 → 创建 GitLab 仓库 → 注入 CI/CD 变量 → 初始化 git 并推送。
# 创建纯前端项目(默认)
minij create my-project
# 显式指定创建纯前端项目
minij create my-frontend-project --type frontend
# 创建 BI 项目
minij create my-bi-project --type bi --port 3002选项
| 选项 | 说明 |
|------|------|
| -t, --type <type> | 项目类型(bi/frontend,默认 frontend) |
| -p, --port <port> | Node 服务端口,范围 3000-3100,默认 3001(仅适用于 BI 项目) |
| --profile <profile> | AI 规范画像(pc-admin/h5/miniapp/official-site-pc/bi),默认根据项目类型自动选择 |
执行流程
- 根据项目类型选择模板:
- BI 项目:
[email protected]:dataverse/minij-bi-admin-template.git - 纯前端项目:
[email protected]:dataverse/minij-admin-template.git
- BI 项目:
- 删除
.git目录 - 根据项目类型替换模板内容:
- BI 项目:替换
frontend/、backend/中的模板名和配置 - 纯前端项目:替换根目录中的模板名和配置
- BI 项目:替换
- 生成
.minijrc.json,记录项目来源模板(projectSource)、AI 规范画像(aiRules)和创建进度,供后续sync-template、sync-ai-rules与continue-create使用 - 调用 orchestrator
POST /api/create-repo创建 GitLab 私有仓库 - 调用 orchestrator
POST /api/setup-ci-variables注入 CI/CD 变量 - 初始化本地 git 并推送到远程仓库
- 自动同步 AI 编码规范,生成
CLAUDE.md(失败不阻断主流程) - 若流程因内网、SSH、GitLab 服务异常中断,可通过
minij continue-create <name>继续执行剩余步骤
完成后输出
✓ 项目 my-project 创建完成!
目录: /path/to/my-project
远程仓库(SSH): [email protected]:dataverse/my-project.git
远程仓库(HTTPS): https://git.minij.com/dataverse/my-project
Node 端口: 3002
提示:GitLab CI/CD 正在构建,约 20S后可访问
访问地址:
https://dataverse.minij.com/DataVerse/my-project/minij continue-create <name>
当 minij create 因网络、SSH 或 GitLab 服务异常在中途中断时,本地项目已生成但远程流程未完成,可通过此命令继续执行剩余步骤。
这是 AI 助手在检测到创建中断时应首先尝试的恢复命令,禁止手动执行 git 操作代替它。
minij continue-create my-project
# 别名
minij resume-create my-project恢复逻辑
该命令读取项目根目录的 .minijrc.json 中的进度状态,自动跳过已完成步骤:
| 步骤 | 判断依据 | 未完成时执行 |
|------|----------|-------------|
| 创建 GitLab 仓库 | gitlabProjectId 是否存在 | POST /api/create-repo |
| 绑定 CI/CD 变量 | ciVariablesSetup 是否为 true | POST /api/setup-ci-variables |
| 初始化本地 git | gitInitialized 是否为 true | git init → remote → commit |
| 推送初始代码 | initialPushDone 是否为 true | git push -u origin main |
已完成的步骤会直接跳过,输出"跳过"提示。
安全边界
- 本地目录不存在:报错,提示先执行
minij create。 - 本地目录存在但无
.minijrc.json:报错,无法识别未完成的任务。 .minijrc.json中的项目名与命令参数不一致:报错,防止误操作。- 所有步骤均已完成(
initialPushDone: true):直接输出创建完成信息,不重复执行。
也可通过重新执行 minij create <name> 触发自动续跑,效果相同。
minij sync-template
同步当前项目的模板架构代码。该命令会读取项目根目录下的 .minijrc.json,自动识别项目最初是从哪个模板创建而来,然后仅同步白名单中的架构文件,不覆盖业务代码。
注意:此命令仅适用于
projectSource为minij-template的项目。external(非 minij 模板创建)项目执行此命令会报错并引导使用minij sync-ai-rules。
# 预览将要同步的文件
minij sync-template --dry-run
# 同步模板架构代码
minij sync-template
# 跳过确认,直接同步
minij sync-template --force选项
| 选项 | 说明 |
|------|------|
| --dry-run | 仅预览将要同步的文件,不实际修改项目 |
| --force | 跳过确认,直接执行同步 |
同步机制
- 读取项目根目录的
.minijrc.json - 自动识别来源模板类型(
bi/frontend) - 拉取对应模板最新代码到临时目录
- 只同步白名单中的架构文件
- 同步前自动将模板中的占位符替换为当前项目名
- 输出已同步文件列表,业务代码不受影响
老项目手动补 .minijrc.json
如果项目是较早通过旧版本 CLI 创建的,根目录可能还没有 .minijrc.json。这时可以手动创建后再执行 sync-template。
BI 项目示例:
{
"projectSource": "minij-template",
"templateType": "bi",
"projectName": "your-project-name",
"createdAt": "2026-04-15T00:00:00.000Z",
"backendPort": "3001",
"aiRules": {
"profile": "bi",
"rulesVersion": "main"
}
}纯前端项目示例:
{
"projectSource": "minij-template",
"templateType": "frontend",
"projectName": "your-project-name",
"createdAt": "2026-04-15T00:00:00.000Z",
"aiRules": {
"profile": "pc-admin",
"rulesVersion": "main"
}
}字段说明:
projectSource:项目来源,minij-template(minij 模板创建)或external(非模板项目)。缺省时根据是否有templateType自动推断templateType:来源模板类型,必须是bi或frontendprojectName:当前项目名,用于模板占位符替换createdAt:创建时间,建议使用 ISO 格式时间字符串backendPort:仅 BI 项目需要,用于同步backend/.env等配置aiRules.profile:AI 规范画像,决定同步哪些规则文件aiRules.rulesVersion:规则仓库的 git ref(分支/标签),默认main
创建完成后,在项目根目录执行:
minij sync-template --dry-run
minij sync-template当前白名单策略
- BI 项目:
.gitlab-ci.yml、frontend/package.json、frontend/vite.config.ts、frontend/src/main.ts、frontend/src/router/index.ts、frontend/src/router/guards.ts、frontend/src/layouts/AdminLayout.vue、frontend/src/utils/request.ts、frontend/src/utils/auth.ts、README.md - 纯前端项目:
.gitlab-ci.yml、package.json、vite.config.ts、src/main.ts、src/router/index.ts、src/router/guards.ts、src/layouts/AdminLayout.vue、src/utils/request.ts、src/utils/auth.ts、README.md
不在白名单内的文件不会被同步,因此已创建项目中的业务页面和业务组件不会被覆盖。
package.json会采用 merge 策略:同步模板新增的scripts、dependencies、devDependencies和packageManager,保留当前项目名。
模板同步完成后会自动调用 sync-ai-rules 刷新 AI 编码规范(失败仅提示,不影响同步结果)。
minij sync-ai-rules
同步当前项目的 AI 编码规范,根据 .minijrc.json 中的 aiRules 配置,从规范仓库拉取对应画像的规则文件,自动生成 CLAUDE.md。首次在纯业务项目中执行时,如果当前目录没有 .minijrc.json,命令会自动初始化 external 配置;如果检测到手写 CLAUDE.md,会先迁移到 CLAUDE.local.md,再生成新的远程规范文件。
支持两种项目来源:
- minij-template(由
minij create创建的项目) - external(非 minij 模板项目,可由
sync-ai-rules首次执行时自动初始化)
# 同步 AI 规范(遵循 8 小时检查间隔)
minij sync-ai-rules
# 强制同步,忽略检查间隔
minij sync-ai-rules --force
# 预览同步结果,不写入文件
minij sync-ai-rules --dry-run
# 临时指定画像
minij sync-ai-rules --force --profile h5
# 静默模式,适用于 predev 钩子
minij sync-ai-rules --silent
# 仅检查 CLAUDE.md 是否最新(CI 场景)
minij sync-ai-rules --check选项
| 选项 | 说明 |
|------|------|
| --force | 跳过 8 小时检查间隔,强制同步 |
| --dry-run | 仅预览同步结果,不写入文件 |
| --profile <profile> | 临时指定 AI 规范画像(pc-admin/h5/miniapp/official-site-pc/bi) |
| --silent | 静默模式,无输出且错误不退出,适用于 predev 自动同步 |
| --check | 仅检查 CLAUDE.md 是否最新,不写入文件。不是最新时返回非零退出码 |
首次接入行为
- 若项目已有
.minijrc.json:直接按配置同步;如果现有CLAUDE.md是手写内容,会先迁移到CLAUDE.local.md。 - 若项目没有
.minijrc.json:视为 external 业务项目,先通过--profile或交互选择 AI 规范画像,创建.minijrc.json,再同步生成CLAUDE.md。 - 同步前会自动确保
.gitignore包含CLAUDE.md,避免生成的远程规范文件被提交到业务仓库。 --dry-run与--check不会执行首次初始化,也不会写入.gitignore。
规则来源优先级
- 本地 bundled:项目目录下
docs/minij-ai-rules/manifest.json存在时优先使用(开发调试用) - 远程仓库:默认从
[email protected]:minij/web-app/minij-ai-rules.git拉取,缓存到~/.minij/ai-rules-cache/
同步机制
- 读取
.minijrc.json中的aiRules.profile确定画像 - 根据
manifest.json中画像对应的规则列表,按序拼接规则文件 - 合并
CLAUDE.local.md(项目本地自定义规范) - 计算 SHA-256 哈希,与现有
CLAUDE.md比对,有变化才写入 - 更新
.minijrc.json中的lastCheckedAt、lastSyncedCommit、lastRulesHash
可用画像
| 画像 | 说明 | 默认规则 |
|------|------|---------|
| pc-admin | PC 后台管理系统 | base + vue3-ts + platform/pc-admin + ui/element-plus + ui/lemon |
| h5 | 移动端 H5 | base + vue3-ts + platform/h5 + ui/vant |
| miniapp | 小程序(Taro) | base + vue3-ts + platform/taro-miniapp |
| official-site-pc | 官网 PC 端 | base + vue3-ts + platform/official-site-pc + ui/tailwind |
| bi | BI 数据可视化项目 | base + vue3-ts + platform/bi + ui/element-plus + ui/lemon + capability/chart-bi |
项目本地自定义规范
在项目根目录创建 CLAUDE.local.md,写入项目特有的规范内容。同步时会自动追加到 CLAUDE.md 末尾的「项目本地规范」章节。此文件不会被 sync 覆盖。
external 项目接入
非 minij 模板创建的老业务项目,可直接执行 minij sync-ai-rules --force 自动初始化 .minijrc.json、迁移手写 CLAUDE.md 并生成新规范。若希望同时配置 .gitignore、predev 钩子并执行首次同步,也可以使用 minij setup-ai-rules 一键接入(见下方章节)。
也可手动创建 .minijrc.json:
{
"projectSource": "external",
"projectName": "your-project-name",
"aiRules": {
"profile": "pc-admin",
"rulesVersion": "main"
}
}然后执行 minij sync-ai-rules --force 即可生成 CLAUDE.md。
predev 自动同步
模板项目的 package.json 已内置 predev 钩子,每次 pnpm dev 时自动静默检查:
{
"scripts": {
"predev": "minij sync-ai-rules --silent || true"
}
}minij setup-ai-rules
为已有业务项目一键接入 AI 编码规范。适用于非 minij create 创建的老项目,一条命令完成所有配置。
# 交互式选择画像
minij setup-ai-rules
# 直接指定画像
minij setup-ai-rules --profile pc-admin选项
| 选项 | 说明 |
|------|------|
| --profile <profile> | AI 规范画像(pc-admin/h5/miniapp/official-site-pc/bi),不传则交互式选择 |
执行流程
该命令会依次完成以下 5 步:
| 步骤 | 说明 |
|------|------|
| 1. 创建 .minijrc.json | 以 projectSource: "external" 写入,项目名自动从 package.json 读取 |
| 2. 迁移已有 CLAUDE.md | 若项目已有手写的 CLAUDE.md,询问是否重命名为 CLAUDE.local.md 保留(详见下方) |
| 3. 配置 .gitignore | 将 CLAUDE.md 添加到 .gitignore(已存在则跳过) |
| 4. 添加 predev 钩子 | 在 package.json 的 scripts 中添加 "predev": "minij sync-ai-rules --silent \|\| true"(已存在则跳过) |
| 5. 首次同步 AI 规范 | 自动执行 sync-ai-rules --force,从远程仓库拉取规则并生成 CLAUDE.md |
已有 CLAUDE.md 迁移
如果项目中已存在手写的 CLAUDE.md,命令会识别并提示:
- 手写的 CLAUDE.md(非 sync-ai-rules 生成):询问是否重命名为
CLAUDE.local.md- 若
CLAUDE.local.md已存在:询问是否将原内容追加到其末尾 - 选择「否」:原
CLAUDE.md保持不动,但后续同步时会被覆盖
- 若
- 自动生成的 CLAUDE.md(含自动生成标识头):直接跳过,后续同步覆盖
迁移为 CLAUDE.local.md 后,同步时内容会自动追加到生成的 CLAUDE.md 末尾「项目本地规范」章节,用户原有的自定义规范不会丢失。
交互式画像选择
不传 --profile 时,会列出所有可选画像供选择:
请选择 AI 规范画像:
1. pc-admin — PC 后台管理系统(Element Plus + Lemon)
2. h5 — 移动端 H5(Vant)
3. miniapp — 小程序 Taro
4. official-site-pc — 官网 PC 端(Tailwind)
5. bi — BI 数据可视化项目(Element Plus + Lemon + 图表)
请输入编号(默认 1):安全边界
- 项目已存在
.minijrc.json:提示已完成接入,直接返回 - 无
package.json:跳过 predev 钩子添加,其余步骤正常执行 - 首次同步失败(如不在内网):仅输出警告,
.minijrc.json和.gitignore已配置好,后续可手动重试
完成后输出
✓ 已创建 .minijrc.json
✓ 已将 CLAUDE.md 添加到 .gitignore
✓ 已添加 predev 钩子到 package.json
✓ AI 规范已更新(画像: pc-admin)
✓ AI 规范接入完成!
后续使用:
pnpm dev 自动检查并同步(predev 钩子)
minij sync-ai-rules --force 手动强制同步
创建 CLAUDE.local.md 添加项目自定义规范minij init
在当前目录生成 CLAUDE.md(AI 助手执行规则),并检测 608 内网连通性和 SSH 到 GitLab 的连通性。
- 若项目根目录存在
.minijrc.json,则通过sync-ai-rules从规范仓库生成CLAUDE.md - 若不存在
.minijrc.json,则生成内置的基础版CLAUDE.md(包含 CLI 指令映射表和断点续跑规则)
minij initSSH 检查失败时会提示配置步骤:
ssh-keygen -t ed25519 -C "[email protected]"
cat ~/.ssh/id_ed25519.pub
# 将公钥添加到 git.minij.com → Settings → SSH Keysminij server-deploy <name>
调用 orchestrator POST /api/setup-router 为项目分配端口并配置 Nginx 路由。
minij server-deploy my-project当前 DataVerse 体系前端通过 CI/CD 直接部署,通常不需要单独调用此命令。 此命令仅用于需要手动配置 Nginx 路由的特殊场景。
完整工作流
# 1. 检查环境(首次使用)
minij init
# 2. 创建纯前端项目(默认,自动生成 CLAUDE.md)
minij create my-project
# 若创建因内网/SSH/GitLab 异常中断,继续执行剩余步骤
minij continue-create my-project
# 或创建 BI 项目
minij create my-bi-project --type bi --port 3002
# 3. 进入项目目录,开始开发
cd my-project # 或 cd my-bi-project
# 4. 随时同步最新 AI 规范(predev 钩子会自动检查)
minij sync-ai-rules --force
# 5. 同步模板架构代码(有新版本时)
minij sync-template
# 6. 推送代码触发 CI/CD 自动部署
git add .
git commit -m "feat: ..."
git push
# 7. 部署完成后访问
# https://dataverse.minij.com/DataVerse/my-project/外部项目接入 AI 规范
# 进入老业务项目根目录,一键接入
cd your-existing-project
minij setup-ai-rules
# 或直接指定画像跳过交互
minij setup-ai-rules --profile pc-admin本地开发测试
1. 安装依赖并构建
pnpm install
pnpm build2. 本地挂载 CLI
在 minij-cli 目录执行:
pnpm link --global挂载完成后,可直接在终端使用:
minij --version
minij init3. 测试创建项目全流程
需确保当前机器已连接minij 608 内网,且
minij-orchestrator-server已部署在http://192.168.50.41:8888。
# 测试创建 BI 项目
minij create test-bi-demo --type bi --port 3002
# 测试创建纯前端项目
minij create test-frontend-demo --type frontend该命令会验证以下完整链路:
- 克隆对应类型的模板仓库
- 替换项目名
- 调用 orchestrator 创建 GitLab 仓库
- 注入 GitLab CI/CD 变量
- 初始化 git 并推送到远程仓库
4. 修改代码后重新测试
每次修改 CLI 源码后,重新执行:
pnpm build然后再次运行:
# 测试 BI 项目
minij create another-bi-demo --type bi --port 3003
# 测试纯前端项目
minij create another-frontend-demo --type frontend5. 如需取消全局挂载
pnpm unlink --global @minij/cli配置
CLI 默认连接 http://192.168.50.41:8888,无需手动配置。
如需覆盖,可编辑 ~/.minij/config.json:
{
"ORCHESTRATOR_URL": "http://192.168.50.41:8888"
}项目名规范
- 只能包含字母、数字、中划线、下划线
- 示例:
my-project、data_dashboard、bi2025
