schemeta/scripts/react-path.mjs
2026-02-19 19:18:27 -05:00

41 lines
1.2 KiB
JavaScript

#!/usr/bin/env node
import { existsSync, readFileSync } from 'node:fs';
import { spawnSync } from 'node:child_process';
import path from 'node:path';
const command = process.argv[2];
if (!command) {
console.error('[react-path] Missing command argument (e.g. lint/test/build/dev).');
process.exit(1);
}
const reactDir = path.resolve(process.cwd(), 'frontend-react');
const reactPkgPath = path.join(reactDir, 'package.json');
const reactNodeModulesPath = path.join(reactDir, 'node_modules');
if (!existsSync(reactPkgPath)) {
console.log(`[react-path] Stub: frontend-react is not scaffolded yet. Skipping "${command}".`);
process.exit(0);
}
const reactPkg = JSON.parse(readFileSync(reactPkgPath, 'utf8'));
if (!reactPkg.scripts || !reactPkg.scripts[command]) {
console.log(`[react-path] Stub: frontend-react/package.json has no "${command}" script. Skipping.`);
process.exit(0);
}
if (!existsSync(reactNodeModulesPath)) {
console.log('[react-path] Stub: frontend-react dependencies are not installed. Skipping.');
process.exit(0);
}
const result = spawnSync('npm', ['--prefix', reactDir, 'run', command], {
stdio: 'inherit',
});
if (typeof result.status === 'number') {
process.exit(result.status);
}
process.exit(1);