Simple Build
Run your build scripts in parallel, showing their output nicely.
To engage with the system, create a build.mjs
script that builds the whole project.
The script must also have a default export that describes watching capabilities.
A simple script looks like this:
#!/usr/bin/env node
import path from 'path';
import { fileURLToPath } from 'url';
import { execSync } from 'child_process';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
export default {
// Watch for modifications in this folder to trigger re-build.
watch: [ __dirname ],
// custom name for the project
name: 'foo',
};
// Run build only when executed directly, not imported.
if (import.meta.url === `file://${process.argv[1]}`) build().catch(e => process.exit(1));
// Do your build here.
async function build() {
console.time('build');
const command = process.env.FORCE_COLORS ?
'npx tsc --pretty -p .' :
'npx tsc -p .'
;
console.log('Running TSC...');
execSync(command, {
stdio: 'inherit',
cwd: __dirname,
});
console.timeEnd('build');
}