47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
import packageJson from '../../package.json';
|
|
import { DEFAULT_INPUT_TEMPLATE } from '../constant';
|
|
|
|
export function getBuildConfig() {
|
|
if (typeof process === 'undefined') {
|
|
throw new TypeError(
|
|
'[Server Config] you are importing a nodejs-only module outside of nodejs',
|
|
);
|
|
}
|
|
|
|
const buildMode = process.env.BUILD_MODE ?? 'standalone';
|
|
const isApp = !!process.env.BUILD_APP;
|
|
const version = `v${packageJson.version}`;
|
|
|
|
const commitInfo = (() => {
|
|
try {
|
|
const childProcess = require('node:child_process');
|
|
const commitDate: string = childProcess
|
|
.execSync('git log -1 --format="%at000" --date=unix')
|
|
.toString()
|
|
.trim();
|
|
const commitHash: string = childProcess
|
|
.execSync('git log --pretty=format:"%H" -n 1')
|
|
.toString()
|
|
.trim();
|
|
|
|
return { commitDate, commitHash };
|
|
} catch (e) {
|
|
console.error('[Build Config] No git or not from git repo.');
|
|
return {
|
|
commitDate: 'unknown',
|
|
commitHash: 'unknown',
|
|
};
|
|
}
|
|
})();
|
|
|
|
return {
|
|
version,
|
|
...commitInfo,
|
|
buildMode,
|
|
isApp,
|
|
template: process.env.DEFAULT_INPUT_TEMPLATE ?? DEFAULT_INPUT_TEMPLATE,
|
|
};
|
|
}
|
|
|
|
export type BuildConfig = ReturnType<typeof getBuildConfig>;
|