99 lines
2.6 KiB
TypeScript
99 lines
2.6 KiB
TypeScript
import { Plugin } from 'vite';
|
|
import { WatchOptions } from 'chokidar';
|
|
|
|
type MaybePromise<T> = T | Promise<T>;
|
|
type RenameFunc = (fileName: string, fileExtension: string, fullPath: string) => MaybePromise<string>;
|
|
/**
|
|
* @param content content of file
|
|
* @param filename absolute path to the file
|
|
* @returns the transformed content. when `null` is returned, the file won't be created.
|
|
*/
|
|
type TransformFunc<T extends string | Buffer> = (content: T, filename: string) => MaybePromise<T | null>;
|
|
type TransformOptionObject = {
|
|
encoding: Exclude<BufferEncoding, 'binary'>;
|
|
handler: TransformFunc<string>;
|
|
} | {
|
|
encoding: 'buffer';
|
|
handler: TransformFunc<Buffer>;
|
|
};
|
|
type TransformOption = TransformFunc<string> | TransformOptionObject;
|
|
type Target = {
|
|
/**
|
|
* path or glob
|
|
*/
|
|
src: string | string[];
|
|
/**
|
|
* destination
|
|
*/
|
|
dest: string;
|
|
/**
|
|
* rename
|
|
*/
|
|
rename?: string | RenameFunc;
|
|
/**
|
|
* transform
|
|
*
|
|
* `src` should only include files when this option is used
|
|
*/
|
|
transform?: TransformOption;
|
|
/**
|
|
* Should timestamps on copied files be preserved?
|
|
*
|
|
* When false, timestamp behavior is OS-dependent.
|
|
* Ignored for transformed files.
|
|
* @default false
|
|
*/
|
|
preserveTimestamps?: boolean;
|
|
/**
|
|
* Whether to dereference symlinks.
|
|
*
|
|
* When true, symlinks will be dereferenced.
|
|
* When false, symlinks will not be dereferenced.
|
|
* @default true
|
|
*/
|
|
dereference?: boolean;
|
|
/**
|
|
* Whether to overwrite existing file or directory.
|
|
*
|
|
* When true, it will overwrite existing file or directory.
|
|
* When false, it will skip those files/directories.
|
|
* When 'error', it will throw an error.
|
|
*
|
|
* @default true
|
|
*/
|
|
overwrite?: boolean | 'error';
|
|
};
|
|
type ViteStaticCopyOptions = {
|
|
/**
|
|
* Array of targets to copy.
|
|
*/
|
|
targets: Target[];
|
|
/**
|
|
* Preserve the directory structure.
|
|
*
|
|
* Similar to `flatten: false` in rollup-plugin-copy
|
|
* @default false
|
|
*/
|
|
structured?: boolean;
|
|
/**
|
|
* Suppress console output.
|
|
* @default false
|
|
*/
|
|
silent?: boolean;
|
|
watch?: {
|
|
/**
|
|
* Watch options
|
|
*/
|
|
options?: WatchOptions;
|
|
/**
|
|
* Reloads page on file change when true
|
|
* @default false
|
|
*/
|
|
reloadPageOnChange?: boolean;
|
|
};
|
|
};
|
|
|
|
declare const viteStaticCopy: (options: ViteStaticCopyOptions) => Plugin[];
|
|
|
|
export { type RenameFunc, type Target, type TransformFunc, type TransformOption, type ViteStaticCopyOptions, viteStaticCopy };
|