mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-11 23:26:30 +08:00
75 lines
1.8 KiB
TypeScript
75 lines
1.8 KiB
TypeScript
import { spawn } from 'node:child_process';
|
|
import path from 'node:path';
|
|
|
|
import type { BuildFlags } from '../config/index.js';
|
|
import { projectRoot } from '../config/index.js';
|
|
import { buildI18N } from '../util/i18n.js';
|
|
|
|
const cwd = path.resolve(projectRoot, 'packages/frontend/core');
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
const buildType = process.env.BUILD_TYPE_OVERRIDE || process.env.BUILD_TYPE;
|
|
|
|
if (process.env.BUILD_TYPE_OVERRIDE) {
|
|
process.env.BUILD_TYPE = process.env.BUILD_TYPE_OVERRIDE;
|
|
}
|
|
|
|
const getChannel = () => {
|
|
switch (buildType) {
|
|
case 'canary':
|
|
case 'beta':
|
|
case 'stable':
|
|
case 'internal':
|
|
return buildType;
|
|
case '':
|
|
throw new Error('BUILD_TYPE is not set');
|
|
default: {
|
|
throw new Error(
|
|
`BUILD_TYPE must be one of canary, beta, stable, internal, received [${buildType}]`
|
|
);
|
|
}
|
|
}
|
|
};
|
|
|
|
const getDistribution = () => {
|
|
switch (process.env.DISTRIBUTION) {
|
|
case 'browser':
|
|
case 'desktop':
|
|
return process.env.DISTRIBUTION;
|
|
case undefined: {
|
|
console.log('DISTRIBUTION is not set, defaulting to browser');
|
|
return 'browser';
|
|
}
|
|
default: {
|
|
throw new Error('DISTRIBUTION must be one of browser, desktop');
|
|
}
|
|
}
|
|
};
|
|
|
|
const flags = {
|
|
distribution: getDistribution(),
|
|
mode: 'production',
|
|
channel: getChannel(),
|
|
coverage: process.env.COVERAGE === 'true',
|
|
} satisfies BuildFlags;
|
|
|
|
buildI18N();
|
|
spawn(
|
|
'node',
|
|
[
|
|
'--loader',
|
|
'ts-node/esm/transpile-only',
|
|
'../../../node_modules/webpack/bin/webpack.js',
|
|
'--mode',
|
|
'production',
|
|
'--env',
|
|
'flags=' + Buffer.from(JSON.stringify(flags), 'utf-8').toString('hex'),
|
|
].filter((v): v is string => !!v),
|
|
{
|
|
cwd,
|
|
stdio: 'inherit',
|
|
shell: true,
|
|
env: process.env,
|
|
}
|
|
);
|