import { HtmlTagDescriptor, Plugin } from 'vite';
declare const presetConfig: {
react: {
var: string;
path: string;
};
'react-dom': {
var: string;
alias: string[];
path: string;
};
'react-router-dom': {
var: string;
path: string;
cdnjs: {
path: string;
};
};
'antd@5': {
name: string;
var: string;
path: string;
css: string;
cdnjs: {
path: string;
css: string;
};
};
'antd@4': {
name: string;
var: string;
path: string;
css: string;
cdnjs: {
path: string;
css: string;
};
};
'vue@3': {
name: string;
var: string;
path: string;
cdnjs: {
path: string;
};
};
'vue@2': {
name: string;
var: string;
path: string;
cdnjs: {
path: string;
};
};
'vue-router@4': {
name: string;
var: string;
path: string;
cdnjs: {
path: string;
};
};
'vue-router@3': {
name: string;
var: string;
path: string;
cdnjs: {
path: string;
};
};
moment: {
var: string;
path: string;
externalGlobals(id: string): "moment" | undefined;
cdnjs: {
path: string;
};
};
dayjs: {
var: string;
path: string;
};
axios: {
var: string;
path: string;
cdnjs: {
path: string;
};
};
lodash: {
var: string;
path: string;
externalGlobals(id: string): string | undefined;
descriptor: {
tag: string;
children: string;
};
cdnjs: {
path: string;
};
};
};
type PresetKeys = keyof typeof presetConfig;
type NullValue = void | null | undefined;
type Module = {
/** 依赖名称 */
name: string;
/**
* 依赖的全局变量名称,如react-dom: ReactDOM
*/
var: string;
/**
* js路径,支持完整路径 {baseUrl}占位符为cdn的基本路径
* @example "/dist/antd.min.js"
* @example "{baseUrl}/antd@{version}/dist/antd.min.js"
* @example "https://cdn.jsdelivr.net/npm/antd@5.22.1/dist/antd.min.js"
*/
path: string | string[];
/**
* css路径
* @example "/dist/antd.min.css"
*/
css?: string | string[];
/**
* 依赖别名
* @example "react-dom"的别名: ["react-dom/client"]
*/
alias?: string[];
/**
* 依赖版本,默认获取安装的版本,手动配置时请确保与开发环境的版本一致
*/
version?: string;
/**
* 如果项目中为动态引入该依赖 import('echarts'),可开启动态引入cdn
* cdn引入方式 'esm' | 'global'
* @example esm 以esm方式导出 dist/echarts.esm.min.js
* @example global 以全局变量(umd/iife)方式导出 dist/echarts.min.js
*/
dynamic?: 'esm' | 'global';
/**
* 自定义全局变量,详情请查看 rollup-plugin-external-globals
* @param id 引入路径
* @returns 全局名称
*/
externalGlobals?: (id: string) => string | NullValue;
/**
* 额外插入的标签,如 lodash 想修改全局名称
* @example {tag: 'script', children: 'window._lodash = _.noConflict()}
*/
descriptor?: HtmlTagDescriptor | HtmlTagDescriptor[];
};
type PluginOptions = {
/**
* CDN基本路径,预设'jsdelivr' | 'cdnjs' | 'unpkg'
* @example 'https://unpkg.com/{name}@{version}/{path}'
*/
cdnUrl?: CdnKeys | (string & {});
/** 模块配置 */
modules: (Module | PresetKeys)[];
/** 自定义生成script标签的属性与位置 */
generateScriptTag?: (name: string, path: string) => Omit;
/** 自定义生成css标签的属性与位置 */
generateCssLinkTag?: (name: string, path: string) => Omit;
/**
* 只使用externalGlobals插件
* 如果你需要使用rollup打包某些CDN包时也许有用
*/
onlyExternalGlobals?: boolean;
};
type CdnKeys = 'jsdelivr' | 'cdnjs' | 'unpkg';
declare const dynamicImportCdn: (options: PluginOptions) => Plugin;
export { type PluginOptions, dynamicImportCdn };