piral-cli
Version:
The standard CLI for creating and building a Piral instance or a Pilet.
94 lines (87 loc) • 1.85 kB
text/typescript
import { setStandardEnvs } from '../common/envs';
import type { PiralBuildHandler, LogLevels } from '../types';
let handler: PiralBuildHandler;
function run(
root: string,
piralInstances: Array<string>,
emulator: boolean,
standalone: boolean,
sourceMaps: boolean,
watch: boolean,
contentHash: boolean,
minify: boolean,
externals: Array<string>,
publicUrl: string,
outFile: string,
outDir: string,
entryFiles: string,
logLevel: LogLevels,
args: any,
) {
setStandardEnvs({
production: !emulator,
root,
publicPath: publicUrl,
debugPiral: emulator,
debugPilet: emulator || standalone,
piralInstances,
dependencies: externals,
});
return handler.create({
root,
entryFiles,
outFile,
outDir,
externals,
emulator,
sourceMaps,
contentHash,
minify,
publicUrl,
hmr: false,
logLevel,
watch,
args,
});
}
process.on('message', async (msg: any) => {
try {
switch (msg.type) {
case 'init':
handler = require(msg.path);
break;
case 'start':
const bundler = await run(
process.cwd(),
msg.piralInstances,
msg.emulator,
msg.standalone,
msg.sourceMaps,
msg.watch,
msg.contentHash,
msg.minify,
msg.externals,
msg.publicUrl,
msg.outFile,
msg.outDir,
msg.entryFiles,
msg.logLevel,
msg,
);
const result = await bundler.bundle();
if (result && !msg.watch) {
process.send({
type: 'done',
outDir: result.outDir,
outFile: result.outFile,
});
}
break;
}
} catch (error) {
process.send({
type: 'fail',
error: error?.message,
});
}
});