构建和部署
构建
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 通过内网代理 oss)。
在 ecs 中代理到桶的内网地址,需要将 Host 头改为桶的域名,访问 html 默认会返回 Content-Disposition 头,这个要进行移除。