piral-cli
Version:
The standard CLI for creating and building a Piral instance or a Pilet.
117 lines (107 loc) • 2.29 kB
text/typescript
import { setStandardEnvs } from '../common/envs';
import type {
PiletSchemaVersion,
LogLevels,
SharedDependency,
BundleHandlerResponse,
PiletBuildHandler,
} from '../types';
let handler: PiletBuildHandler;
let bundler: BundleHandlerResponse;
function run(
root: string,
targetDir: string,
outDir: string,
outFile: string,
piralInstances: Array<string>,
externals: Array<string>,
importmap: Array<SharedDependency>,
entryModule: string,
version: PiletSchemaVersion,
logLevel: LogLevels,
args: any,
) {
setStandardEnvs({
production: false,
piralInstances,
root,
});
return handler.create({
root,
piralInstances,
entryModule,
targetDir,
outDir,
outFile,
externals,
importmap,
version,
develop: true,
sourceMaps: true,
contentHash: true,
minify: false,
logLevel,
watch: true,
args,
});
}
process.on('message', async (msg: any) => {
const root = process.cwd();
try {
switch (msg.type) {
case 'init':
handler = require(msg.path);
break;
case 'bundle':
if (bundler) {
await bundler.bundle();
}
break;
case 'start':
bundler = await run(
root,
msg.targetDir,
msg.outDir,
msg.outFile,
msg.piralInstances,
msg.externals,
msg.importmap,
msg.entryModule,
msg.version,
msg.logLevel,
msg,
);
if (bundler) {
bundler.onStart(() => {
process.send({
type: 'pending',
});
});
bundler.onEnd((result) => {
if (msg.hmr) {
process.send({
type: 'update',
outHash: result.hash,
outName: result.name,
args: {
requireRef: result.requireRef,
version: msg.version,
root,
},
});
}
});
process.send({
type: 'done',
outDir: msg.outDir,
});
}
break;
}
} catch (error) {
process.send({
type: 'fail',
error: error?.message,
});
}
});