@uni-ku/bundle-optimizer
Version:
uni-app 分包优化插件化实现
46 lines (44 loc) • 2 kB
text/typescript
import { BuildOptions, IndexHtmlTransformContext, ModuleNode, Plugin, PluginOption, splitVendorChunk } from "vite";
//#region src/type.d.ts
type Prettify<T> = { [K in keyof T]: T[K] } & {};
// #region Rollup 相关类型定义获取
type ExtractOutputOptions<T> = T extends (infer U)[] ? U : T extends undefined ? never : T;
type OutputOptions = ExtractOutputOptions<Exclude<BuildOptions['rollupOptions'], undefined>['output']>;
type ManualChunksOption = OutputOptions['manualChunks'];
type RenderDynamicImportOptions = Parameters<Plugin['renderDynamicImport']>[0];
type ModuleInfo = Pick<Exclude<ModuleNode['info'], undefined>, 'id' | 'meta' | 'importers' | 'importedIds' | 'importedIdResolutions' | 'dynamicImporters' | 'dynamicallyImportedIds' | 'dynamicallyImportedIdResolutions'> & {
isMain?: boolean;
};
type GetManualChunk = ReturnType<typeof splitVendorChunk>;
type ManualChunkMeta = Parameters<GetManualChunk>['1'];
type OutputChunk = Exclude<IndexHtmlTransformContext['chunk'], undefined>;
// #endregion
interface ISubPkgsInfo {
root: string;
independent: boolean;
}
type Enable = 'optimization' | 'async-component' | 'async-import';
interface IOptions {
/**
* 插件功能开关(可选)
*
* @description 默认为true,即开启所有功能
*/
enable?: boolean | Prettify<Partial<Record<Enable, boolean>>>;
/**
* log 控制,默认不启用,为false
*/
logger?: Prettify<boolean | Enable[]>;
/**
* 日志落盘
* ---
* 如果启用则会在 `node_modules/.cache/[项目名称]` 下生成 `logs.log` 日志文件, 也可以传入字符串自定义日志文件路径、名称
*/
logToFile?: boolean | string;
}
//#endregion
//#region src/index.d.ts
declare const _default: (options?: IOptions) => PluginOption;
//#endregion
export { IOptions, ISubPkgsInfo, ManualChunkMeta, ManualChunksOption, ModuleInfo, OutputChunk, OutputOptions, Prettify, RenderDynamicImportOptions, _default as default };
//# sourceMappingURL=index.d.mts.map