跳转到内容

构建和部署

构建

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)。