cozy/plugins/cozy-build.ts

34 lines
No EOL
1.2 KiB
TypeScript

import { AstroIntegration } from 'astro';
import { readFile, writeFile } from 'node:fs/promises';
import { fileURLToPath } from 'node:url';
let assets: string[] = [];
function getBuildTime() {
const today = new Date();
const dd = String(today.getDate()).padStart(2, '0');
const mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
const yyyy = today.getFullYear();
const time = today.getTime();
return mm + dd + yyyy + time;
}
const config: AstroIntegration = {
'name': 'astro-cozy-build',
'hooks': {
'astro:build:ssr': ({ manifest }) => {
assets = manifest.assets.filter(ass => !ass.includes('sw.js'))
console.log('build-cozy', assets)
},
'astro:build:done': async ({ dir }) => {
const outFile = fileURLToPath(new URL('./sw.js', dir));
const originalScript = await readFile(outFile);
const assetsDeclaration = `const assets = ${JSON.stringify(assets)};\n`;
const versionDeclaration = `const version = ${JSON.stringify(getBuildTime())};\n`;
await writeFile(outFile, assetsDeclaration + versionDeclaration + originalScript);
}
}
}
export default (): AstroIntegration => config;