universo-platform-2d

Форк
0
66 строк · 1.7 Кб
1
import { spawn } from 'node:child_process';
2

3
import webpack from 'webpack';
4

5
import { getCwdFromDistribution } from '../config/cwd.cjs';
6
import type { BuildFlags } from '../config/index.js';
7
import { createWebpackConfig } from '../webpack/webpack.config.js';
8

9
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
10
const buildType = process.env.BUILD_TYPE_OVERRIDE || process.env.BUILD_TYPE;
11

12
if (process.env.BUILD_TYPE_OVERRIDE) {
13
  process.env.BUILD_TYPE = process.env.BUILD_TYPE_OVERRIDE;
14
}
15

16
const getChannel = () => {
17
  switch (buildType) {
18
    case 'canary':
19
    case 'beta':
20
    case 'stable':
21
    case 'internal':
22
      return buildType;
23
    case '':
24
      throw new Error('BUILD_TYPE is not set');
25
    default: {
26
      throw new Error(
27
        `BUILD_TYPE must be one of canary, beta, stable, internal, received [${buildType}]`
28
      );
29
    }
30
  }
31
};
32

33
let entry: BuildFlags['entry'];
34

35
const { DISTRIBUTION = 'web' } = process.env;
36

37
const cwd = getCwdFromDistribution(DISTRIBUTION);
38

39
if (DISTRIBUTION === 'desktop') {
40
  entry = { app: './index.tsx', shell: './shell/index.tsx' };
41
}
42

43
const flags = {
44
  distribution: DISTRIBUTION as BuildFlags['distribution'],
45
  mode: 'production',
46
  channel: getChannel(),
47
  coverage: process.env.COVERAGE === 'true',
48
  entry,
49
  static: false,
50
} satisfies BuildFlags;
51

52
spawn('yarn', ['workspace', '@affine/i18n', 'build'], {
53
  stdio: 'inherit',
54
});
55

56
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
57
webpack(createWebpackConfig(cwd!, flags), (err, stats) => {
58
  if (err) {
59
    console.error(err);
60
    process.exit(1);
61
  }
62
  if (stats?.hasErrors()) {
63
    console.error(stats.toString('errors-only'));
64
    process.exit(1);
65
  }
66
});
67

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.