import fs from 'node:fs'; import path from 'node:path'; import { execFileSync } from 'node:child_process'; const modulesDir = path.resolve('Modules'); const npmCli = process.env.npm_execpath; if (!npmCli || !path.isAbsolute(npmCli) || !fs.existsSync(npmCli)) { throw new Error('npm_execpath must reference an existing absolute npm CLI path.'); } for (const moduleName of fs.readdirSync(modulesDir)) { const modulePath = path.join(modulesDir, moduleName); if (!fs.statSync(modulePath).isDirectory()) { continue; } const packageJson = path.join(modulePath, 'package.json'); const viteConfig = path.join(modulePath, 'vite.config.js'); if (!fs.existsSync(packageJson) || !fs.existsSync(viteConfig)) { console.log(`Skipping ${moduleName}`); continue; } console.log(`Building ${moduleName}`); try { execFileSync( process.execPath, [npmCli, 'run', 'build'], { cwd: modulePath, stdio: 'inherit', env: { ...process.env, PATH: '/usr/bin:/bin' }, } ); } catch (error) { console.error(`Failed building ${moduleName}`); process.exit(1); } }