import fs from 'fs-extra' import { createRequire } from 'node:module' import type { Configuration } from './defineConfig' import paths from '../config/paths' import { resolveModule } from './resolveModule' const require = createRequire(import.meta.url) const defaultOverride: Configuration = { minify: true, proxy: [], extraPostCSSPlugins: [], import: [], pure_funcs: ['console.log'], } function migrateOverride(override: Configuration) { // 迁移提示 v1 -> v2,后续版本会删除这些废弃的配置项 if ('transformNodeModules' in override) { console.warn('transformNodeModules 配置已废弃,请删除这个配置项') } if ('minifyImage' in override) { console.warn('minifyImage 配置已废弃,请删除这个配置项') } if (typeof override.minify !== 'boolean') { console.warn('minify 类型错误,请使用boolean类型,已自动设置为 true') override.minify = true } if ('babel' in override) { throw new Error( 'babel 配置已废弃,请删除这个配置项。如果有 babel-plugin-import 相关的配置,请直接使用 import 选项' ) } } let override: Configuration | null = null export default function getOverride(): Configuration { if (override) return override override = Object.assign({}, defaultOverride) if (fs.existsSync(paths.override)) { const userOverride = resolveModule(require(paths.override)) if (typeof userOverride !== 'object') throw new Error('格式错误,请使用 npx edu g override 生成文件') Object.assign(override, userOverride) migrateOverride(override) } return override }