| 1393 | } |
| 1394 | |
| 1395 | export async function resolveConfig( |
| 1396 | inlineConfig: InlineConfig, |
| 1397 | command: 'build' | 'serve', |
| 1398 | defaultMode = 'development', |
| 1399 | defaultNodeEnv = 'development', |
| 1400 | isPreview = false, |
| 1401 | /** @internal */ |
| 1402 | patchConfig: ((config: ResolvedConfig) => void) | undefined = undefined, |
| 1403 | /** @internal */ |
| 1404 | patchPlugins: ((resolvedPlugins: Plugin[]) => void) | undefined = undefined, |
| 1405 | ): Promise<ResolvedConfig> { |
| 1406 | let config = inlineConfig |
| 1407 | config.build ??= {} |
| 1408 | setupRollupOptionCompat(config.build, 'build') |
| 1409 | config.worker ??= {} |
| 1410 | setupRollupOptionCompat(config.worker, 'worker') |
| 1411 | config.optimizeDeps ??= {} |
| 1412 | setupRollupOptionCompat(config.optimizeDeps, 'optimizeDeps') |
| 1413 | if (config.ssr) { |
| 1414 | config.ssr.optimizeDeps ??= {} |
| 1415 | setupRollupOptionCompat(config.ssr.optimizeDeps, 'ssr.optimizeDeps') |
| 1416 | } |
| 1417 | |
| 1418 | let configFileDependencies: string[] = [] |
| 1419 | let mode = inlineConfig.mode || defaultMode |
| 1420 | // When `NODE_ENV` isn't set locally, ask Vite Task for it; the runner |
| 1421 | // also records the env in the build's cache key. |
| 1422 | if (process.env.NODE_ENV === undefined) { |
| 1423 | const nodeEnv = getEnv('NODE_ENV') |
| 1424 | if (nodeEnv !== undefined) { |
| 1425 | process.env.NODE_ENV = nodeEnv |
| 1426 | } |
| 1427 | } |
| 1428 | const isNodeEnvSet = !!process.env.NODE_ENV |
| 1429 | const packageCache: PackageCache = new Map() |
| 1430 | |
| 1431 | // some dependencies e.g. @vue/compiler-* relies on NODE_ENV for getting |
| 1432 | // production-specific behavior, so set it early on |
| 1433 | if (!isNodeEnvSet) { |
| 1434 | process.env.NODE_ENV = defaultNodeEnv |
| 1435 | } |
| 1436 | |
| 1437 | const configEnv: ConfigEnv = { |
| 1438 | mode, |
| 1439 | command, |
| 1440 | isSsrBuild: command === 'build' && !!config.build?.ssr, |
| 1441 | isPreview, |
| 1442 | } |
| 1443 | |
| 1444 | let { configFile } = config |
| 1445 | if (configFile !== false) { |
| 1446 | const loadResult = await loadConfigFromFile( |
| 1447 | configEnv, |
| 1448 | configFile, |
| 1449 | config.root, |
| 1450 | config.logLevel, |
| 1451 | config.customLogger, |
| 1452 | config.configLoader, |