mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-12-02 15:42:24 +08:00
66 lines
2.1 KiB
TypeScript
66 lines
2.1 KiB
TypeScript
import path from 'node:path';
|
|
|
|
import fs from 'fs-extra';
|
|
// @ts-ignore
|
|
import mergeOptions from 'merge-options';
|
|
|
|
import App from '../Core';
|
|
import { UserConfig } from '../types';
|
|
import { loadUserConfig } from '../utils/loadUserConfig';
|
|
|
|
export const scripts = (defaultAppConfig: UserConfig) => {
|
|
const entry = async (): Promise<App> => {
|
|
if (process.env.NODE_ENV === undefined) {
|
|
process.env.NODE_ENV = 'development';
|
|
}
|
|
|
|
// resolve user config file
|
|
const userConfigPath = [
|
|
path.resolve(defaultAppConfig.source, 'tmagic.config.ts'),
|
|
path.resolve(defaultAppConfig.source, 'tmagic.config.js'),
|
|
path.resolve(defaultAppConfig.source, 'tmagic.config.cjs'),
|
|
path.resolve(defaultAppConfig.temp, 'config.ts'),
|
|
path.resolve(defaultAppConfig.temp, 'config.js'),
|
|
path.resolve(defaultAppConfig.temp, 'config.cjs'),
|
|
].find((item) => fs.pathExistsSync(item));
|
|
|
|
const localUserConfigPath = [
|
|
path.resolve(defaultAppConfig.source, 'tmagic.config.local.ts'),
|
|
path.resolve(defaultAppConfig.source, 'tmagic.config.local.js'),
|
|
path.resolve(defaultAppConfig.source, 'tmagic.config.local.cjs'),
|
|
path.resolve(defaultAppConfig.temp, 'config.local.ts'),
|
|
path.resolve(defaultAppConfig.temp, 'config.local.js'),
|
|
path.resolve(defaultAppConfig.temp, 'config.local.cjs'),
|
|
].find((item) => fs.pathExistsSync(item));
|
|
|
|
let userConfig = await loadUserConfig(userConfigPath);
|
|
|
|
if (localUserConfigPath) {
|
|
const localUserConfig = await loadUserConfig(localUserConfigPath);
|
|
|
|
if (localUserConfig.packages?.length) {
|
|
localUserConfig.packages = [...(userConfig.packages || []), ...localUserConfig.packages];
|
|
}
|
|
|
|
userConfig = mergeOptions(userConfig, localUserConfig);
|
|
}
|
|
|
|
// resolve the final app config to use
|
|
const appConfig = mergeOptions(defaultAppConfig, userConfig);
|
|
const app = new App(appConfig);
|
|
|
|
// clean temp and cache
|
|
if (appConfig.cleanTemp === true) {
|
|
await fs.remove(app.dir.temp());
|
|
}
|
|
|
|
// initialize and prepare
|
|
await app.init();
|
|
await app.prepare();
|
|
|
|
return app;
|
|
};
|
|
|
|
return entry;
|
|
};
|