aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/build.js
blob: ef2b998071d4ee3bc67f2c94120ad6daa3ffc6ac (plain) (blame)
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
import { build as esbuildBuild } from 'esbuild';
import { join } from 'path';
import { build as viteBuild } from 'vite';

import { fileURLToDirname } from '../config/utils.js';

const thisDir = fileURLToDirname(import.meta.url);

/**
 * @param {string} packageName
 * @returns {Promise<import('esbuild').BuildResult>}
 */
async function buildPackageEsbuild(packageName) {
  /** @type {{ default: import('esbuild').BuildOptions }} */
  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: 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((err) => {
  console.error(err);
  process.exit(1);
});