Skip to content

Commit 7b1686b

Browse files
committedOct 18, 2023
Support (async) function in vite plugin (resolves #303)
1 parent e2aebc3 commit 7b1686b

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed
 

‎src/plugins/vite/index.ts

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { timerify } from '../../util/Performance.js';
22
import { hasDependency, load } from '../../util/plugin.js';
33
import { findVitestDeps } from '../vitest/index.js';
4-
import type { ViteConfig } from './types.js';
4+
import type { ViteConfig, MODE, COMMAND } from './types.js';
55
import type { IsPluginEnabledCallback, GenericPluginCallback } from '../../types/plugins.js';
66

77
// https://vitejs.dev/config/
@@ -20,6 +20,17 @@ const findViteDependencies: GenericPluginCallback = async (configFilePath, optio
2020

2121
if (!localConfig) return [];
2222

23+
if (typeof localConfig === 'function') {
24+
const dependencies = new Set<string>();
25+
for (const command of ['dev', 'serve', 'build'] as COMMAND[]) {
26+
for (const mode of ['development', 'production'] as MODE[]) {
27+
const config = await localConfig({ command, mode, ssrBuild: undefined });
28+
findVitestDeps(config, options).forEach(dependency => dependencies.add(dependency));
29+
}
30+
}
31+
return Array.from(dependencies);
32+
}
33+
2334
return findVitestDeps(localConfig, options);
2435
};
2536

‎src/plugins/vite/types.ts

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
import type { VitestConfig } from '../vitest/types.js';
22

3-
export interface ViteConfig extends VitestConfig {
3+
interface Config extends VitestConfig {
44
plugins: unknown[];
55
}
6+
7+
export type COMMAND = 'dev' | 'serve' | 'build';
8+
export type MODE = 'development' | 'production';
9+
10+
interface Options {
11+
command: COMMAND;
12+
mode: MODE;
13+
ssrBuild?: boolean | undefined;
14+
}
15+
16+
export type ViteConfig = Config | ((options: Options) => Config) | ((options: Options) => Promise<Config>);

0 commit comments

Comments
 (0)
Please sign in to comment.