one-click-deploy
将本地静态网站或已经构建完成的前端项目发布到公网。Skill 不绑定特定 Agent、操作系统用户或安装目录;安装器应保留本目录结构,并把 scripts/one-click-deploy.sh 暴露为可执行命令,或在调用时传入安装后的 skill 根目录。
使用
安装器已将入口加入 PATH 时:
one-click-deploy ./dist
one-click-deploy ./dist --provider cf-pages --name my-site
未加入 PATH 时,使用安装器提供的实际路径替换 <skill-dir>:
bash <skill-dir>/scripts/one-click-deploy.sh ./dist
不要把 <skill-dir> 替换为某台机器上的固定绝对路径。安装后可用以下命令自检:
bash <skill-dir>/scripts/one-click-deploy.sh --help
默认 provider 是 surge。入口脚本会相对于自身位置加载 provider 脚本,因此从任意当前工作目录调用都可以。
Provider 与选项
| Provider | 用途 | 主要选项 |
|---|---|---|
surge |
Surge 静态发布 | --domain、--preview、--install、--output-dir、--dry-run、--no-verify |
cf-pages |
Cloudflare Pages Direct Upload | --name、--output-dir、--branch、--preview、--install、--domain、--dry-run、--no-verify |
运行 provider 的 --help 查看完整参数。未知参数会以退出码 2 拒绝;目录或前置检查失败通常返回 1;认证失败返回 3。--dry-run 只执行本地目录、安全文件和配置检查,不安装 CLI、不访问 provider、不上传。
发布目录
- 直接传入包含
index.html的静态目录; - 对前端项目,默认识别
dist/、build/,也可以显式传入--output-dir DIR; - 不自动安装依赖、不自动运行 build;
- 发布目录必须位于传入的项目路径内(直接传入的绝对输出目录除外,仅用于兼容 provider 脚本的显式路径行为)。
Surge
依赖 Surge CLI 和已完成的 Surge 登录:
one-click-deploy ./dist --provider surge --domain my-site.surge.sh
surge login
只有显式传入 --install 才会运行 npm install --global surge。--domain 仅设置发布目标,不修改 DNS。
Cloudflare Pages
依赖 Wrangler。优先使用 OAuth:
wrangler login
wrangler whoami
one-click-deploy ./dist --provider cf-pages --name my-site
远程或无图形界面环境可以使用环境变量:
export CLOUDFLARE_API_TOKEN='your-token'
export CLOUDFLARE_ACCOUNT_ID='your-account-id'
Token 只在运行部署的终端中配置,不要发送给 Agent、写进脚本或提交 Git。缺少 Wrangler 时,只有显式传入 --install 才会通过 npm 安装。
--domain 只输出 Custom Domains 配置提示,不修改 DNS。部署 URL 会在未使用 --no-verify 时进行 HTTPS HEAD 验证。
安全边界
- 只发布用户明确指定或脚本自动识别的静态目录;
- 拒绝包含
.env、私钥、证书和常见凭据文件的目录; - 不使用
sudo,不初始化 Git,不创建仓库,不修改 DNS; - 发布属于外部写入操作,Agent 应在执行前展示 provider、项目、目录和 branch 摘要;
- 不保存或回显密码、Token 或其他秘密。
目录约定
可分发包至少包含:
one-click-deploy/
├── SKILL.md
├── README.md
├── metadata.json
└── scripts/
├── one-click-deploy.sh
├── deploy-surge.sh
└── deploy-cloudflare-pages.sh