fix(deploy): inject SW_VERSION into all env blocks

This commit is contained in:
wuzf
2026-08-09 20:40:19 +08:00
parent 8ddb91c62d
commit e3c229b2fe
2 changed files with 25 additions and 1 deletions

View File

@@ -1,6 +1,8 @@
export function injectWorkerVersion(configText, version) {
// 必须带 g顶层 [vars] 和各 [env.X.vars] 都有独立的 SW_VERSION
// 只替换首个会让 env 部署的 Service Worker 缓存版本停在旧值,用户拿不到更新
const updated = configText.replace(
/^(\s*SW_VERSION\s*=\s*)"[^"]*"(\s*)$/m,
/^(\s*SW_VERSION\s*=\s*)"[^"]*"(\s*)$/gm,
`$1"${version}"$2`
);

View File

@@ -21,6 +21,28 @@ SW_VERSION = "v1"
expect(updated.match(/\[\[kv_namespaces\]\]/g)).toHaveLength(1);
});
it('replaces SW_VERSION in every env block, not just the first', () => {
const config = `name = "2fa"
[vars]
SW_VERSION = "v1"
ENVIRONMENT = "production"
[env.development]
name = "2fa-dev"
[env.development.vars]
ENVIRONMENT = "development"
SW_VERSION = "v1"
`;
const updated = injectWorkerVersion(config, 'v1.7.0');
// 漏替换任一处都会让该环境的 Service Worker 缓存版本停在旧值,用户拿不到更新
expect(updated.match(/SW_VERSION = "v1\.7\.0"/g)).toHaveLength(2);
expect(updated).not.toContain('SW_VERSION = "v1"');
});
it('throws when SW_VERSION is missing', () => {
expect(() => injectWorkerVersion('[vars]\n', 'v20260325-123456')).toThrow(
'在 wrangler.toml 中未找到 SW_VERSION 配置'