构建和部署
构建
vitepress 只需要简单配置就能实现不同变种的构建,在配置文件中,可以通过环境变量读取要进行哪个变种的构建,以此配置 sitemap、统计分析、备案等功能。
ts
import assert from "assert";
const config = {
oss: {
// ...
},
github: {
// ...
},
}[process.env.MODE ?? "oss"];
assert(config !== undefined);清理 public 资源
不同的变种可能需要不一样的 public 资源,比如部署到 github 时不需要公安备案图标,可以通过 buildEnd 删除。
ts
import { unlink } from "fs/promises";
export default defineConfig({
buildEnd: async (siteConfig) => {
if (process.env.MODE === "github") {
await unlink(`${siteConfig.outDir}/filing-icon.png`);
}
},
});部署
oss
阿里云的 oss 支持配置静态网站,配置完成后,用 rclone 同步到 oss 中。
oss 会强制下载文件,可以通过在桶中进行域名绑定来解除这个限制,然后在 ecs 中直接代理到桶的内网地址即可(需修改 Host 头为绑定的域名,同时给到 ecs 对应的 vpc 公共读权限)。
为了防止 oss 被刷流量,对于非指定 vpc 网络需要鉴权(用于本地部署),而指定 vpc 可以进行公共读(用于 ecs 通过内网代理 oss)。