#!/usr/bin/env node
import * as esbuild from 'esbuild';
import yargs from 'yargs';
import * as Server from './server.mjs';
import * as Client from './client.mjs';
import path from 'path';
import {fileURLToPath} from 'url';
const IS_DEV = process.env.NODE_ENV === 'development';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const argv = yargs(process.argv.slice(2))
.choices('t', ['client', 'server'])
.options('w', {
alias: 'watch',
default: false,
type: 'boolean',
})
.parse();
async function main() {
if (argv.w) {
const serverCtx = await esbuild.context(Server.config);
const clientCtx = await esbuild.context(Client.config);
await Promise.all([serverCtx.watch(), clientCtx.watch()]);
console.log('watching for changes...');
} else {
switch (argv.t) {
case 'server': {
await esbuild.build({
sourcemap: IS_DEV,
minify: IS_DEV === false,
...Server.config,
});
break;
}
case 'client': {
await esbuild.build({
sourcemap: IS_DEV,
minify: IS_DEV === false,
...Client.config,
});
break;
}
}
}
}
main();