20 lines
868 B
JavaScript
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);
|