typing.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import type { PluginVisualizerOptions } from 'rollup-plugin-visualizer';
  2. import type { ConfigEnv, PluginOption, UserConfig } from 'vite';
  3. import type { PluginOptions } from 'vite-plugin-dts';
  4. import type { Options as PwaPluginOptions } from 'vite-plugin-pwa';
  5. import viteTurboConsolePlugin from 'unplugin-turbo-console/vite';
  6. interface IImportMap {
  7. imports?: Record<string, string>;
  8. scopes?: {
  9. [scope: string]: Record<string, string>;
  10. };
  11. }
  12. /**
  13. * importmap 插件配置
  14. */
  15. interface ImportmapPluginOptions {
  16. /**
  17. * CDN 供应商
  18. * @default jspm.io
  19. */
  20. defaultProvider?: 'esm.sh' | 'jspm.io';
  21. /** importmap 配置 */
  22. importmap?: Array<{ name: string; range?: string }>;
  23. /** 手动配置importmap */
  24. inputMap?: IImportMap;
  25. }
  26. /**
  27. * 用于判断是否需要加载插件
  28. */
  29. interface ConditionPlugin {
  30. // 判断条件
  31. condition?: boolean;
  32. // 插件对象
  33. plugins: () => PluginOption[] | PromiseLike<PluginOption[]>;
  34. }
  35. interface CommonPluginOptions {
  36. /** 是否开启devtools */
  37. devtools?: boolean;
  38. /** 环境变量 */
  39. env?: Record<string, any>;
  40. /** 是否开启注入metadata */
  41. injectMetadata?: boolean;
  42. /** 是否构建模式 */
  43. isBuild?: boolean;
  44. /** 构建模式 */
  45. mode?: string;
  46. /** 开启依赖分析 */
  47. visualizer?: PluginVisualizerOptions | boolean;
  48. }
  49. interface ApplicationPluginOptions extends CommonPluginOptions {
  50. /** 开启 gzip 压缩 */
  51. compress?: boolean;
  52. /** 压缩类型 */
  53. compressTypes?: ('brotli' | 'gzip')[];
  54. /** 在构建的时候抽离配置文件 */
  55. extraAppConfig?: boolean;
  56. /** html 插件配置 */
  57. html?: boolean;
  58. /** 是否开启i18n */
  59. i18n?: boolean;
  60. /** 是否开启 importmap CDN */
  61. importmap?: boolean;
  62. /** importmap 插件配置 */
  63. importmapOptions?: ImportmapPluginOptions;
  64. /** 是否注入app loading */
  65. injectAppLoading?: boolean;
  66. /** 是否注入版权信息 */
  67. license?: boolean;
  68. /** 是否开启pwa */
  69. pwa?: boolean;
  70. /** pwa 插件配置 */
  71. pwaOptions?: Partial<PwaPluginOptions>;
  72. /** turbo-console 插件配置 */
  73. turboConsole?: Parameters<typeof viteTurboConsolePlugin>[0] | boolean;
  74. }
  75. interface LibraryPluginOptions extends CommonPluginOptions {
  76. /** 开启 dts 输出 */
  77. dts?: PluginOptions | boolean;
  78. /** 是否注入lib css */
  79. injectLibCss?: boolean;
  80. }
  81. interface ApplicationOptions extends ApplicationPluginOptions {}
  82. interface LibraryOptions extends LibraryPluginOptions {}
  83. interface DefineApplicationOptions {
  84. application?:
  85. | ((config: ConfigEnv) => ApplicationOptions)
  86. | ApplicationOptions;
  87. vite?: ((config: ConfigEnv) => UserConfig) | UserConfig;
  88. }
  89. interface DefineLibraryOptions {
  90. library?: ((config: ConfigEnv) => LibraryOptions) | LibraryOptions;
  91. vite?: ((config: ConfigEnv) => UserConfig) | UserConfig;
  92. }
  93. type DefineConfig = {
  94. type?: 'application' | 'auto' | 'library';
  95. } & DefineApplicationOptions &
  96. DefineLibraryOptions;
  97. export type {
  98. ApplicationPluginOptions,
  99. CommonPluginOptions,
  100. ConditionPlugin,
  101. DefineApplicationOptions,
  102. DefineConfig,
  103. DefineLibraryOptions,
  104. IImportMap,
  105. ImportmapPluginOptions,
  106. LibraryPluginOptions,
  107. };