ChatGPT-Next-Web/app/config/build.ts

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>;