auto-static-web
v1.0.4
Published
一键部署静态网站到阿里云 OSS
Readme
auto-static-web
一键部署静态网站到阿里云 OSS,支持可选 HTTPS(CDN 加速 + 免费 SSL 证书)。
给定一个本地文件夹(或单个 HTML 文件)和一个域名,自动完成:
- 创建 OSS Bucket(或复用已有的)
- 上传文件(自动设置 MIME 类型和缓存策略)
- 开启静态网站托管
- 配置 CNAME 解析
- 绑定自定义域名
- (可选)启用 HTTPS — 自动创建 CDN 加速域名 + 配置免费 SSL 证书
全程自动,无需打开阿里云控制台。
前置准备
1. 安装 Node.js
需要 Node.js 18 或更高版本。
下载地址:https://nodejs.org/ (选 LTS 版本)
验证安装:
node -v
# 应显示 v18.x.x 或更高2. 开通阿里云 OSS
- 注册/登录 阿里云
- 搜索「对象存储 OSS」并进入
- 按提示开通服务(按量付费,部署一个小静态站费用可忽略)
3. 获取 AccessKey
强烈建议使用 RAM 子用户,不要用主账号的 AccessKey。
- 登录 RAM 控制台
- 左侧 身份管理 → 用户 → 创建用户
- 填写用户名(如
auto-static-web),勾选 OpenAPI 调用访问 - 创建后,立即保存 AccessKey ID 和 Secret(Secret 仅显示一次)
- 给用户授权,搜索并添加:
AliyunOSSFullAccess(OSS 读写权限)AliyunDNSFullAccess(DNS 解析权限)AliyunCDNFullAccess(CDN 权限,启用 HTTPS 时需要)
4. 准备域名
- 一个域名(已备案或不需要备案的都可以)
- 域名的 DNS 解析托管在阿里云(工具会自动配置 CNAME 记录)
安装
# 克隆项目
git clone <repo-url>
cd auto-static-web
# 安装依赖
npm install
# 编译
npm run build
# 全局链接(之后可在任意目录使用 auto-static-web 命令)
npm link配置 AccessKey
在项目根目录创建 .env 文件:
ALIBABA_CLOUD_ACCESS_KEY_ID=你的AccessKey_ID
ALIBABA_CLOUD_ACCESS_KEY_SECRET=你的AccessKey_Secret
.env文件已在.gitignore中,不会被提交到 Git 仓库。
使用方式
一行命令部署(HTTP)
auto-static-web deploy -d ./dist --domain static.example.com一行命令部署(HTTPS)
加 --https 参数,自动走 CDN 流路并配置免费 SSL 证书:
auto-static-web deploy -d ./dist --domain static.example.com --https交互过程:
? 该域名是否已完成 ICP 备案? No
? 是否启用 HTTPS?(通过 CDN 加速,自动配置免费 SSL 证书) Yes
── 部署配置确认 ──
Bucket: asw-m1a2b3-xyz
文件路径: /path/to/dist
地域: 香港
访问域名: static.example.com
HTTPS: 启用
? 请确认:确认,开始部署
✔ Bucket [asw-m1a2b3-xyz] 已就绪 (cn-hongkong)
✔ 上传完成: 34 个文件已上传
✔ 静态网站托管已开启 (首页: index.html, 404: index.html)
✔ CDN 加速域名已创建
✔ CNAME 记录已配置
✔ HTTPS 已启用 (免费 SSL 证书)
✨ 部署完成!
访问地址: https://static.example.com
OSS 地址: http://asw-m1a2b3-xyz.oss-cn-hongkong.aliyuncs.com
文件数量: 34
HTTPS 已启用交互式部署
只传文件路径,其他选项通过交互选择:
auto-static-web deploy -d ./distCLI 会依次询问:
- 自定义域名
- 是否已备案(已备案 → 华东1,未备案 → 香港)
- 是否启用 HTTPS
- 确认配置(可反复修改 Bucket / 域名 / 地域)
常用命令速查
| 场景 | 命令 |
|------|------|
| 最简单部署 | auto-static-web deploy -d ./dist --domain static.example.com |
| HTTPS 部署 | auto-static-web deploy -d ./dist --domain static.example.com --https |
| 指定 Bucket 名称 | auto-static-web deploy -d ./dist -b my-site --domain static.example.com |
| 指定地域 | auto-static-web deploy -d ./dist --domain static.example.com -r cn-hangzhou |
| 交互式 | auto-static-web deploy -d ./dist |
参数说明
| 参数 | 短参 | 必填 | 说明 |
|------|------|------|------|
| --dist | -d | 是 | 本地文件夹路径或单个 HTML 文件路径 |
| --domain | | 否 | 自定义域名(不传则交互式询问) |
| --bucket | -b | 否 | OSS Bucket 名称(不传则自动生成) |
| --region | -r | 否 | OSS 地域(默认根据备案状态自动选择) |
| --https | | 否 | 启用 HTTPS(通过 CDN 加速 + 免费 SSL 证书) |
域名与地域选择
| 场景 | 地域 | 说明 |
|------|------|------|
| 已备案域名 | cn-hangzhou | 国内访问更快 |
| 未备案域名 | cn-hongkong | 无需备案即可使用 |
工作原理
HTTP 部署流程
创建/复用 Bucket → 上传文件 → 开启静态托管 → 配置 CNAME → 绑定域名关键设计:先配置 CNAME 再绑定域名。OSS 绑定域名时会检查域名是否已解析到该 Bucket。CNAME 已存在时,同账号域名通常可直接绑定成功,无需手动验证。
HTTPS 部署流程
创建/复用 Bucket → 上传文件 → 开启静态托管 → 创建 CDN 加速域名 → 配置 CNAME → CDN → 配置免费 SSLHTTPS 路径通过 CDN 代理 OSS 流量,CDN 自动配置免费 SSL 证书。不需要在 OSS 上绑定域名(CDN 直接回源 OSS Bucket)。
常见问题
Q: 域名不在阿里云 DNS 怎么办?
工具自动配置 CNAME 仅支持阿里云 DNS。如果域名 DNS 在其他服务商,需要手动添加 CNAME 记录:
- HTTP:指向
{bucket}.oss-{region}.aliyuncs.com - HTTPS:指向 CDN 分配的 CNAME(工具会显示)
Q: 已备案域名选华东1还是香港?
已备案域名可选华东1(国内访问更快),也可以选香港。未备案域名只能选香港。
Q: Bucket 名称被占用怎么办?
OSS Bucket 名称全局唯一。如果指定的名称被占用,工具会提示并询问是否自动生成新名称。
Q: 重新部署会覆盖旧文件吗?
会。同名文件会被覆盖。建议使用相同的 Bucket 和域名重复部署。
Q: CDN 创建失败提示 RAM 权限不足?
使用 --https 需要 CDN 权限。在 RAM 控制台 给用户添加 AliyunCDNFullAccess 权限策略。
许可
ISC
作为 Claude Code Skill 使用
如果你使用 Claude Code,可以将 ossify 安装为 skill,通过对话即可部署:
- 将
skill/目录复制到~/.claude/skills/ossify/ - 在 Claude Code 中说「帮我把 ./dist 部署到 xxx.com」
- 首次使用会自动打开图文引导页,帮助你配置阿里云 AccessKey
- 后续使用直接部署,无需再次配置
Skill 优势
- 浏览器图文引导:首次配置时自动打开带截图的引导页面
- 对话式部署:自然语言交互,无需记命令行参数
- 凭证本地管理:AccessKey 保存在
~/.ossify/auth.json,不经过任何外部服务 - 记忆上次配置:重新部署时自动使用上次的域名、地域等设置
- 跨平台支持:macOS、Windows、Linux
