feat(cli): support vite.config.ts (#11223)

This commit is contained in:
neverland
2022-11-05 20:39:51 +08:00
committed by GitHub
parent d9fe675af4
commit fe07c10729
5 changed files with 52 additions and 15 deletions
+23 -3
View File
@@ -1,7 +1,7 @@
import fse from 'fs-extra';
import { sep, join } from 'path';
import { SRC_DIR, getVantConfig } from './constant.js';
import type { InlineConfig } from 'vite';
import { InlineConfig, loadConfigFromFile, mergeConfig } from 'vite';
const { lstatSync, existsSync, readdirSync, readFileSync, outputFileSync } =
fse;
@@ -114,13 +114,33 @@ export function smartOutputFile(filePath: string, content: string) {
outputFileSync(filePath, content);
}
export function mergeCustomViteConfig(config: InlineConfig): InlineConfig {
export async function mergeCustomViteConfig(
config: InlineConfig,
mode: 'production' | 'development'
): Promise<InlineConfig> {
const vantConfig = getVantConfig();
const configureVite = vantConfig.build?.configureVite;
const userConfig = await loadConfigFromFile(
{
mode,
command: mode === 'development' ? 'serve' : 'build',
},
undefined,
process.cwd()
);
if (configureVite) {
return configureVite(config) || config;
const ret = configureVite(config);
if (ret) {
config = ret;
}
}
if (userConfig) {
return mergeConfig(config, userConfig.config);
}
return config;
}
@@ -34,8 +34,13 @@ export async function compileBundles() {
getVantConfig().build?.bundleOptions || DEFAULT_OPTIONS;
await Promise.all(
bundleOptions.map((config) =>
build(mergeCustomViteConfig(getViteConfigForPackage(config)))
bundleOptions.map(async (config) =>
build(
await mergeCustomViteConfig(
getViteConfigForPackage(config),
'production'
)
)
)
);
}
@@ -29,10 +29,16 @@ export function genSiteEntry(): Promise<void> {
export async function compileSite(production = false) {
await genSiteEntry();
if (production) {
const config = mergeCustomViteConfig(getViteConfigForSiteProd());
const config = await mergeCustomViteConfig(
getViteConfigForSiteProd(),
'production'
);
await build(config);
} else {
const config = mergeCustomViteConfig(getViteConfigForSiteDev());
const config = await mergeCustomViteConfig(
getViteConfigForSiteDev(),
'development'
);
const server = await createServer(config);
await server.listen(config.server?.port);