UNPKG

@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
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 };