Shipfe — Rust 写的前端静态部署工具:一条命令上线 + 零停机 + 可回滚 + 自动清理

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。

相关推荐
徐小夕1 小时前
JitWord 2.3: 墨定,行远
前端·vue.js·github
南果梨2 小时前
OpenClaw 完整教程!从安装到使用(官方脚本版)
前端·git·开源
大雨还洅下2 小时前
前端手写: new操作符
前端
hqk2 小时前
鸿蒙项目实战:手把手带你实现 WanAndroid 布局与交互
android·前端·harmonyos
是糖糖啊2 小时前
OpenClaw 从零到一实战指南(飞书接入)
前端·人工智能·后端
Despupilles2 小时前
第三篇、基本骨架结构
前端
swipe3 小时前
从原理到手写:彻底吃透 call / apply / bind 与 arguments 的底层逻辑
前端·javascript·面试
踩着两条虫3 小时前
从设计稿到代码:VTJ.PRO 的 AI 集成系统架构解析
前端·vue.js·人工智能
Mapmost3 小时前
从“雕琢”到“生成”:AIGC正在重塑数字孪生世界
前端