@aliyun-meoo/cli
v0.5.4
Published
Meoo 平台命令行工具 — 管理项目、云服务、边缘函数和部署
Maintainers
Readme
Meoo CLI
Meoo 平台命令行工具 — 管理项目、云服务、边缘函数和部署。
安装
npm install -g @aliyun-meoo/cli
# 验证
meoo --version测试包
仓库内置 Aone CI 流水线 .aoneci/test-package.yaml。任意分支发生推送时,流水线会自动执行测试和 TypeScript 构建,并上传 npm .tgz 测试包制品;不会发布到 npm Registry,也不会修改正式 latest 标签。
测试包使用 <正式版本>-test.<流水线号>.<提交短SHA> 版本号。下载制品后可直接安装:
npm install -g ./meoo-cli-test-package.tgz
meoo --version发布公共 npm
仓库内置 .aoneci/publish-npm.yaml 正式发布流水线。代码合入 main 后,流水线基于 npm 当前最新正式版本自动递增 Patch 版本,在构建工作区同步更新 package.json 和锁文件,并在测试、构建以及打包校验全部通过后,将 @aliyun-meoo/cli 发布到公共 npm。
首次使用前,需要在 Aone CI 仓库密钥中配置具有该 npm 包发布权限的 NPM_TOKEN。流水线使用串行并发策略,避免多个主干合入同时计算出相同版本。手工或 API 触发时只执行完整 Dry Run,不会真正发布。
快速开始
# 1. 登录(在 Meoo 平台「设置 → API 密钥」中创建 Key)
meoo login --ak meoo_ak_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 2. 初始化项目
mkdir my-app && cd my-app
meoo init react-design
# 3. 安装依赖并启动
pnpm install
pnpm dev
# 4. 创建远程项目并关联
meoo projects create "我的应用"
# 5. 开通云服务
meoo cloud enable
# 6. 操作数据库
meoo db query "CREATE TABLE users (id serial primary key, name text)"
meoo db tables命令参考
全局选项
| 选项 | 说明 |
|------|------|
| --json | 以 JSON 格式输出(适用于脚本和 AI Agent) |
| --version | 显示版本号 |
身份认证
meoo login --ak <key> # AK 登录
meoo login --ak <key> --api-url https://api.meoo.com # 指定 API 地址
meoo logout # 退出登录
meoo whoami # 当前用户信息支持环境变量(CI/CD 场景):
export MEOO_API_KEY=meoo_ak_xxxxxxxx
export MEOO_API_URL=https://api.meoo.com # 可选
meoo whoami项目管理
meoo projects list # 列出我的项目
meoo projects list --all # 包含协作项目
meoo projects create [name] # 创建项目并设为当前项目
meoo projects use <urlId> # 切换当前项目
meoo projects current # 显示当前项目模板初始化
meoo init --list # 列出可用模板
meoo init react-design # 初始化模板到当前目录(自动生成 AGENTS.md)可用模板:
| 模板 | 说明 |
|------|------|
| react-project | React 18 + Webpack 5 + Tailwind CSS |
| react-vite-project | React 18 + Vite 5 + Tailwind CSS |
| react-design | React 19 + Vite 7 + shadcn/ui + TanStack Router |
| vue-project | Vue 3 + Vite 5 + Pinia |
| taro-project | Taro 4 + React,微信小程序 + H5 |
云服务
meoo cloud enable # 开通云服务(PostgreSQL + Auth + Storage)
meoo cloud enable --env-mode DUAL # 首次开通时选择双环境;由服务端校验项目资格
meoo cloud status # 查询云服务状态静态应用发布
已开通云服务的静态项目执行 meoo deploy 时,默认先将本地源码推送到沙箱,再由服务端从沙箱 Git HEAD 构建和发布,推送失败不会继续发布。SINGLE 云环境直接完成发布;DUAL 云环境会先准备未激活版本,然后提交并等待云服务同步,只有服务端校验同步任务的项目和 commit 后才完成发布。默认同步云函数,Auth 与定时任务默认不同步;可用 --sync-auth、--sync-cron 或 --no-sync-functions 调整。未开通云服务的项目仍沿用原本地构建发布流程。
--skip-push 和 --skip-build 仍保留旧的本地产物 CDN 发布流程,但不会同步 DUAL 云环境,也不保证 CDN 与沙箱源码同版本。--skip-build 仍可能按旧行为推送源码。云同步提交结果不确定时 CLI 会停止并给出 release/task 身份;不要通过重新提交来猜测结果。
云数据库
meoo db query "SELECT * FROM users" # 执行 SQL
meoo db query --file query.sql # 从文件执行 SQL
meoo db tables # 列出表结构
meoo db tables --schema public,auth # 指定 schema
meoo db migrate --name create_users --sql "CREATE TABLE ..." # DDL 迁移边缘函数
meoo fn list # 列出函数和环境变量
meoo fn deploy <name> # 部署(默认从 ./functions/<name>/ 读取)
meoo fn deploy <name> --dir ./my-fn/ # 指定代码目录
meoo fn deploy <name> --no-verify-jwt # 允许匿名调用
meoo fn delete <name> # 删除函数环境变量
meoo secrets list # 列出环境变量
meoo secrets set <KEY> <VALUE> # 设置环境变量
meoo secrets delete <KEY> # 删除环境变量环境信息
meoo info # 显示运行约束和平台信息(供 AI Agent 参考)
meoo --json info # JSON 格式(AI Agent 可解析)部署到你自己的阿里云账号(meoo aliyun)
这是一条独立于上面所有功能的部署路径,仅在你明确想把项目部署到自己的阿里云账号(ECS/RDS/SLB,费用自己出)时才需要用到。日常发布应用请继续使用上面的
meoo deploy——两者互不影响,也互不替代。
前置条件
- 本机安装
aliyunCLI v3.x 及以上:brew install aliyun-cli(macOS) - 配置好一个有权限的 profile:
aliyun configure(需要 ECS / RDS / SLB / ROS / OSS / STS 权限) - 设置默认地域:
aliyun configure set --region cn-hangzhou
不需要执行 meoo login —— 这条路径不经过 Meoo 平台账号,只依赖本机的 aliyun CLI 配置。
快速开始
meoo aliyun doctor # 1. 环境预检,务必先跑这一步,报错就先修复再继续
meoo aliyun estimate --topology single # 2.(可选)先看价格,不会创建任何资源
meoo aliyun deploy # 3. 部署(交互式:会依次询问拓扑/规格/是否要数据库/密码等)
meoo aliyun status # 4. 查看访问地址、实例信息非交互 / CI 场景可以用 flag 跳过交互提示:
meoo aliyun deploy --force --topology single --no-rds密码永远不要通过命令行参数传递——留空走交互式掩码输入,或者用环境变量:
export MEOO_ALIYUN_ECS_PASSWORD=xxxx
export MEOO_ALIYUN_DB_PASSWORD=xxxx # 仅在开通 RDS 时需要常用命令
meoo aliyun doctor # 环境预检(部署前必跑)
meoo aliyun estimate [--topology ha] [--with-rds] # 询价,不创建资源
meoo aliyun check-stock [--min-zones 2] # 可用区/库存查询
meoo aliyun deploy [--git <url>] # 完整部署(本地项目或 Git 仓库 URL)
meoo aliyun update # 热更新:改完代码后重新打包上传,零停机替换
meoo aliyun rollback # 回滚到上一个版本
meoo aliyun status [--refresh] # 查看部署信息(--refresh 额外查询云端实时状态)
meoo aliyun delete [--yes] # 删除全部资源(默认需要手动输入 DELETE 确认)使用须知
- 这条路径创建的资源计费方是你自己的阿里云账号,不是 Meoo。删除后请去阿里云控制台核对确实没有残留的计费资源(ECS/EIP/SLB/RDS/OSS 桶)。
- 任何会创建计费资源的操作前,CLI 都会强制打印资源清单 + 单价 + 月度估算——即使加了
--force也不会跳过这段披露文字,只会跳过后面的确认提示,请务必看清楚再继续。 meoo aliyun deploy部署成功后会在终端直接打印访问地址(访问地址: http://<公网IP>/)。如果看到HEALTH_CHECK_FAILED,不代表部署失败——资源可能已经创建成功且在正常计费,只是首次冷启动(装运行时+依赖)比健康检查等待的时间长;先手动curl http://<IP>/healthz和curl http://<IP>/确认,再决定是否需要处理,不要看到这条报错就直接删除资源。- 目前自动开通数据库只支持 MySQL(RDS)。检测到 Postgres/Redis/MongoDB 需求时只会提示"暂不支持自动开通",不会自动创建,需要自行配置。
- 完整的命令参数、项目类型识别规则、部署流程细节见
skills/meoo-cli/references/aliyun-deploy.md。
完整的图文/问答式使用指南(前置准备、逐步操作说明、常见问题)见 docs/ALIYUN_DEPLOY.md。
项目约束
通过 meoo init 初始化的项目会自动生成 AGENTS.md,包含以下约束:
- 开发服务器必须运行在 3015 端口(唯一对外端口)
- 构建产物目录
dist/,入口dist/index.html - 禁止启动后端服务器,使用 Meoo Cloud 替代
- 包管理器使用 pnpm
开发路线图
✅ P0 — 已完成
- [x] 用户级 API Key 系统(oneday-api Entity + Service + 中间件认证)
- [x] 前端设置页 API 密钥管理 Tab(onedayAssets)
- [x] CLI 骨架 + Commander.js 装饰器命令注册
- [x]
meoo login/logout/whoami - [x] 环境变量
MEOO_API_KEY/MEOO_API_URL支持 - [x] 无参数
meoo login展示 ASCII 引导图 - [x] 非 localhost 强制 HTTPS
- [x] AK 签名 timingSafeEqual 防时序攻击
- [x] AK 格式优化(
meoo_ak_+ 不透明随机串)
✅ P1 — 已完成
- [x] 全局配置系统(
~/.meoo/config.json) - [x]
meoo projects list/create/use/current - [x]
meoo cloud enable/status - [x]
meoo db query/tables/migrate - [x]
meoo fn list/deploy/delete - [x]
meoo secrets list/set/delete - [x]
meoo init模板初始化(5 个内置模板 + 自动生成 AGENTS.md) - [x]
meoo info环境约束透出 - [x] 所有命令支持
--json输出和--project <urlId>覆盖 - [x] 统一鉴权中间件重构(BaseAuthMiddleware.tryApiKeyAuth)
🔲 P1 补全 — 近期
- [ ]
meoo domains list/add/remove— 自定义域名管理 - [ ]
meoo open— 浏览器打开当前项目工作台 - [ ]
meoo projects delete— 删除项目 - [ ] npm publish 配置和发布
🔲 P2 — 中期
- [ ]
meoo deploy— 发布应用(需设计本地构建→上传方案) - [ ]
meoo releases list/rollback— 版本管理和回滚 - [ ]
meoo logs <fn-name>— 边缘函数日志 - [ ]
meoo link— 将本地目录关联到远程项目 - [ ] 自动更新检查(update-notifier)
🔲 P3 — 远期
- [ ]
meoo ai "<prompt>"— AI 驱动操作(差异化核心功能) - [ ]
meoo skills search/install— 技能市场集成 - [ ]
meoo projects members list/add/remove— 成员管理 - [ ] 浏览器 OAuth 登录
- [ ] 系统 keychain 存储 AK(macOS Keychain / Linux Secret Service)
🔲 安全加固 — 持续
- [x] AK 签名 timingSafeEqual
- [x] CLI 端 HTTPS 强制
- [x] 凭证文件 0o600 权限
- [x] AK 一次性展示(数据库仅存哈希)
- [ ] AK 验证失败频率限制(Redis 计数)
- [ ] CLI 云服务接口项目权限校验
- [ ] AK 创建时可选绑定 IP 白名单
技术架构
- CLI: TypeScript + Commander.js + 装饰器命令注册
- 认证:
meoo_ak_+ 不透明随机串,SHA-256 哈希存储 - 云服务: 复用 oneday-api 现有 CloudProxy 中间件代理
/sb/*路径 - 模板: 内置 npm 包,离线可用
License
MIT
