Files
3031023-xyz-public/scripts/build-site.mjs
T

20 lines
868 B
JavaScript

import { existsSync } from 'node:fs';
import { spawnSync } from 'node:child_process';
const key = process.env.SITE_KEY;
if (!key || !/^[a-z0-9][a-z0-9-]{0,62}$/.test(key) || !existsSync(`sites/${key}/site.json`)) {
throw new Error('SITE_KEY must be a manifest-defined site directory.');
}
const result = spawnSync('npm', ['run', 'build', '--', '--outDir', `dist/${key}`], {
env: { ...process.env, SITE_KEY: key },
stdio: 'inherit'
});
if (result.status !== 0) process.exit(result.status ?? 1);
const images = spawnSync('node', ['scripts/optimize-images.mjs'], { env: { ...process.env, SITE_KEY: key }, stdio: 'inherit' });
if (images.status !== 0) process.exit(images.status ?? 1);
const seo = spawnSync('node', ['scripts/generate-seo.mjs'], { env: { ...process.env, SITE_KEY: key }, stdio: 'inherit' });
if (seo.status !== 0) process.exit(seo.status ?? 1);