1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
import path from 'node:path';
import { build as esbuildBuild } from 'esbuild';
import { build as viteBuild } from 'vite';
import fileUrlToDirname from '../config/fileUrlToDirname.js';
const thisDir = fileUrlToDirname(import.meta.url);
/**
* @param {string} packageName
* @returns {Promise<import('esbuild').BuildResult>}
*/
async function buildPackageEsbuild(packageName) {
/** @type {{ default: import('esbuild').BuildOptions }} */
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- Read untyped config file.
const { default: config } = await import(
`../packages/${packageName}/esbuild.config.js`
);
return esbuildBuild(config);
}
/**
* @param {string} packageName
* @returns {Promise<unknown>}
*/
function buildPackageVite(packageName) {
return viteBuild({
configFile: path.join(thisDir, `../packages/${packageName}/vite.config.js`),
});
}
function buildAll() {
const buildServiceShared = buildPackageEsbuild('service-shared');
const buildShared = buildPackageEsbuild('shared');
return Promise.all([
Promise.all([buildServiceShared, buildShared]).then(() =>
buildPackageEsbuild('main'),
),
buildServiceShared.then(() =>
Promise.all([
buildPackageEsbuild('service-inject'),
buildPackageEsbuild('service-preload'),
]),
),
buildShared.then(() =>
Promise.all([
buildPackageEsbuild('preload'),
buildPackageVite('renderer'),
]),
),
]);
}
buildAll().catch((error) => {
console.error(error);
process.exit(1);
});
|