@fchc8/vite-plugin-multi-page
Version:
A powerful Vite plugin for building multi-page applications with smart file routing and multi-strategy builds
76 lines (70 loc) • 2.73 kB
TypeScript
import { UserConfig, Plugin } from 'vite';
interface MultiPageOptions {
entry?: string;
exclude?: string[];
template?: string;
placeholder?: string;
debug?: boolean;
strategies?: Record<string, ConfigStrategy>;
buildStrategies?: Record<string, ConfigStrategy>;
pageConfigs?: Record<string, PageConfig> | PageConfigFunction;
__forceBuildStrategy?: string;
}
type Options = MultiPageOptions;
interface BuildConfigOptions {
entry: string;
exclude: string[];
template: string;
placeholder: string;
strategies?: Record<string, ConfigStrategy>;
pageConfigs?: Record<string, PageConfig> | PageConfigFunction;
forceBuildStrategy?: string;
}
interface ConfigStrategy extends Omit<UserConfig, 'plugins'> {
}
interface PageConfig {
strategy?: string;
define?: Record<string, any>;
template?: string;
viteConfig?: UserConfig;
match?: string;
}
interface PageContext {
pageName: string;
filePath: string;
relativePath: string;
fullPath?: string;
strategy?: string;
isMatched?: boolean;
}
type PageConfigFunction = (context: PageContext) => PageConfig | null;
interface PluginContext {
mode: string;
command: 'build' | 'serve';
isCLI: boolean;
}
type ConfigFunction = (context: PluginContext) => MultiPageOptions;
type ConfigTransformFunction = (config: MultiPageOptions, context: PluginContext) => MultiPageOptions;
declare function defineConfig(config: MultiPageOptions | ConfigFunction): ConfigFunction;
declare function defineConfigTransform(transform: ConfigTransformFunction): ConfigTransformFunction;
/**
* 构建时配置生成器
* 根据策略和页面配置生成多页面构建配置
*/
declare function generateBuildConfig(options: BuildConfigOptions): Record<string, UserConfig>;
/**
* 获取Vite配置的输出目录
* 需要传入已解析的Vite配置或命令行参数
*/
declare function getViteOutputDirectory(viteBuildArgs?: string[]): string;
/**
* 清理Vite配置的输出目录
*/
declare function cleanViteOutputDirectory(viteBuildArgs?: string[]): void;
declare function getAvailableStrategies(options: BuildConfigOptions): string[];
/**
* 合并用户配置和默认配置
*/
declare function mergeWithDefaults(userConfig: MultiPageOptions | null | undefined): MultiPageOptions;
declare function viteMultiPage(transform?: ConfigTransformFunction): Plugin;
export { type ConfigFunction, type ConfigTransformFunction, type Options, type PageConfig, type PageContext, type PluginContext, cleanViteOutputDirectory, viteMultiPage as default, defineConfig, defineConfigTransform, generateBuildConfig, getAvailableStrategies, getViteOutputDirectory, mergeWithDefaults, viteMultiPage };