GitHub:
github.com/Master-Jian...
文档:
master-jian.github.io/shipfe-rust...
你是否也在重复这个流程
bash
npm run build
scp -r dist/* server:/var/www/app
ssh server # 然后手动替换 / 回滚 / 清理
能用,但痛点太多:
- 每次都要手动 scp/ssh,容易出错
- 多环境、多项目维护成本高
- 发布时替换文件可能造成短暂异常
- 线上出问题回滚麻烦
- 多次部署后服务器磁盘越堆越满
Shipfe 就是把这件事变成:一条命令、安全、可回滚、可清理、零停机。
Shipfe 是什么
Shipfe 是一个 Rust 编写的前端静态资源部署 CLI,专注解决「把 dist 静态资源部署到你自己的服务器」这件事。
适用于:
- Vue / React / Vite
- Next 静态导出 / Nuxt generate
- 任意静态站点
设计原则:不走第三方平台、不会"偷偷联网"
Shipfe 的原则是:
工具本身不会向任何第三方服务发起请求。
部署路径只有:
你的电脑 → 你的服务器(SSH)
不依赖 CI/CD 平台,不上传任何数据到中间服务,更适合:
- 内网环境
- 企业环境
- 对安全敏感的项目
核心能力一览
1)一键部署
css
shipfe deploy --profile prod
自动完成:
- build
- 打包
- 上传
- 更新部署目录
不需要手动 scp / ssh。
2)原子部署(默认零停机发布)
Shipfe 默认使用原子部署策略。
服务器目录会变成标准 releases + current 结构:
bash
/var/www/app
├── releases
│ ├── 20260303_034945
│ ├── 20260303_035012
│ └── 20260303_035045
└── current -> releases/20260303_035045
Nginx 永远指向:
bash
/var/www/app/current
每次发布只需要切换软链接:
切换瞬间完成,实现零停机部署。
3)原子数据共享(Shared Assets / Snapshot)
很多人在实现原子部署时都会遇到一个问题:
新 release 切过去了,但一些旧资源不在新目录里,导致 404。
Shipfe 提供 原子资源共享机制:
shared/assets:跨 release 共享静态资源snapshot/manifest:记录每次部署的资源快照
带来的好处:
- 避免资源重复上传
- 避免切换后资源缺失
- 可追踪每次发布的资源内容
4)自动清理:限制最大 release 数量
线上非常容易出现这种情况:
releases 越来越多,占满服务器磁盘。
Shipfe 支持限制 最多保留 N 个版本。
配置示例:
json
{
"environments": {
"prod": {
"enable_shared": true,
"hashed_asset_patterns": ["assets/"],
"keep_releases": 5
}
}
}
含义:
- 只保留 最近 5 个 release
- 更旧的版本自动删除
- 同时清理不再被引用的 shared 资源
这样可以避免服务器磁盘持续膨胀。
如果你希望 只保留当前版本:
json
"keep_releases": 1
5)一键回滚
回滚到指定版本:
css
shipfe rollback --profile prod --to 20260303_034945
由于使用的是原子结构,回滚本质只是:
重新指向旧 release 的软链接。
因此:
- 回滚速度极快
- 风险极低
- 不需要重新上传文件
6)多环境 + 子环境部署
支持:
- dev / test / prod
- 一台服务器多个项目
例如:
admin
shop
customer
也支持:
css
shipfe deploy --all-sub
一次部署所有子环境。
安装与快速上手
安装:
css
npm i -g shipfe
初始化配置:
csharp
shipfe init
部署:
css
shipfe deploy --profile prod
什么时候你会需要 Shipfe
如果你符合其中任意一条:
- 静态项目上线还在手动 scp / ssh
- 想要零停机发布 + 快速回滚
- 多环境部署越来越复杂
- 服务器 releases / assets 越堆越多
- 想要一个 离线、无第三方依赖 的部署工具
Shipfe 就是为这些场景设计的。
项目地址
GitHub:
github.com/Master-Jian...
文档:
master-jian.github.io/shipfe-rust...
欢迎 Star / Issue / PR。