89 lines
2.4 KiB
TypeScript
89 lines
2.4 KiB
TypeScript
import * as plugins from './plugins.js';
|
|
import * as paths from '../paths.js';
|
|
import * as interfaces from '../interfaces/index.js';
|
|
import { logger } from '../tsbundle.logging.js';
|
|
|
|
export class TsBundleProcess {
|
|
|
|
constructor() {
|
|
// Nothing here
|
|
}
|
|
|
|
/**
|
|
* creates a bundle for the test enviroment
|
|
*/
|
|
public async buildTest(
|
|
fromArg: string,
|
|
toArg: string,
|
|
argvArg: any
|
|
) {
|
|
// create a bundle
|
|
const esbuild = await plugins.esbuild.build({
|
|
entryPoints: [fromArg],
|
|
bundle: true,
|
|
sourcemap: true,
|
|
format: 'esm',
|
|
target: 'es2022',
|
|
entryNames: plugins.path.parse(toArg).name,
|
|
outdir: plugins.path.parse(toArg).dir,
|
|
// splitting: true,
|
|
tsconfig: paths.tsconfigPath
|
|
});
|
|
}
|
|
|
|
/**
|
|
* creates a bundle for the production environment
|
|
*/
|
|
public async buildProduction(
|
|
fromArg: string,
|
|
toArg: string,
|
|
argvArg: any
|
|
) {
|
|
// create a bundle
|
|
console.log('esbuild specific:');
|
|
console.log(`from: ${fromArg}`);
|
|
console.log((`to: ${toArg}`));
|
|
const esbuild = await plugins.esbuild.build({
|
|
entryPoints: [fromArg],
|
|
bundle: true,
|
|
sourcemap: true,
|
|
format: 'esm',
|
|
target: 'es2022',
|
|
minify: true,
|
|
// outfile: toArg,
|
|
entryNames: 'bundle',
|
|
outdir: plugins.path.parse(toArg).dir,
|
|
tsconfig: paths.tsconfigPath,
|
|
// splitting: true,
|
|
chunkNames: 'chunks/[name]-[hash]',
|
|
});
|
|
}
|
|
}
|
|
|
|
const run = async () => {
|
|
console.log('running spawned compilation process');
|
|
const transportOptions: interfaces.IEnvTransportOptions = JSON.parse(process.env.transportOptions);
|
|
console.log('=======> ESBUILD');
|
|
console.log(transportOptions);
|
|
process.chdir(transportOptions.cwd);
|
|
console.log(`switched to ${process.cwd()}`);
|
|
const tsbundleProcessInstance = new TsBundleProcess();
|
|
if (transportOptions.mode === 'test') {
|
|
console.log('building for test:')
|
|
tsbundleProcessInstance.buildTest(
|
|
plugins.smartpath.transform.makeAbsolute(transportOptions.from, process.cwd()),
|
|
plugins.smartpath.transform.makeAbsolute(transportOptions.to, process.cwd()),
|
|
transportOptions.argv
|
|
);
|
|
} else {
|
|
console.log('building for production:')
|
|
tsbundleProcessInstance.buildProduction(
|
|
plugins.smartpath.transform.makeAbsolute(transportOptions.from, process.cwd()),
|
|
plugins.smartpath.transform.makeAbsolute(transportOptions.to, process.cwd()),
|
|
transportOptions.argv
|
|
);
|
|
}
|
|
};
|
|
|
|
run();
|