@irim/bin-tool
Version:
node bin tools
81 lines (80 loc) • 2.85 kB
TypeScript
/// <reference types="node" />
/**
* 遍历文件目录,执行 callback
* @param src 目录路径
* @param fileCallback 执行到文件时的回调,如果返回 false 或 async false,则遍历中止
* @param dirCallback 执行到目录时的回调
* @param exclude 忽略的文件
*/
export declare function fileIterator(src: string, fileCallback: (filePath: string, fileRelativePath: string) => any, dirCallback?: (dirRelativePath: string) => any, exclude?: RegExp): Promise<any>;
/**
* 遍历文件目录,同步到目标目录,并对每一个文件执行 callback
* @param source 源文件目录
* @param target 目标目录
* @param callback
* @param exclude 忽略的文件规则
*/
export declare function dirSyncIterator(source: string, target: string, callback: (sourceFile: string, targetFile: string) => any, exclude?: RegExp): Promise<any>;
/**
* 统计目录中的文件数量
* @param src 目录路径
* @param exclude 忽略的文件
*/
export declare function getFileCount(src: string, exclude?: RegExp): Promise<number>;
export interface OptionShape {
/** 文件来源目录 */
src: string;
/** 目标目录 */
dist: string;
/** 文件内容替换规则 */
replacer?: {
holder: RegExp;
value: string;
}[];
/** 忽略的文件 */
exclude?: RegExp;
/** 只读文件(不读取&替换的文件) */
readonlyFile?: RegExp;
/** 文件名替换方法 */
fileNameTransfer?: (name: string) => string;
/** 文件内容格式化方法 */
contentFormatter?: (content: string, src: string) => Promise<string>;
}
/**
* 复制文件目录
*/
export declare function copyDir(options: OptionShape): Promise<any>;
export interface ClearOptions {
/** 要清除的目录 */
src: string;
/** 是否有二次确认 */
confirm?: boolean;
/** 二次确认文案 */
confirmText?: string;
/** 忽略的文件 */
exclude?: RegExp;
}
export declare function clearDir(options: ClearOptions): Promise<boolean>;
/**
* 从目录中查找内容符合条件的文件
* @param src 文件目录
* @param callback 文件校验规则,传入参数是文件的内容
* @param options
* @return
*/
export declare function findInFolder(src: string, callback: (filePath: string, content: string) => boolean, options?: {
/** 是否找到所有文件,默认 false,即找到第 1 个就返回 */
all?: boolean;
/** 如果指定了 include,则只处理匹配的文件 */
include?: RegExp;
/** 匹配规则的文件跳过 */
exclude?: RegExp;
/** 文件大小限制(byte),超过大小的文件不遍历 */
limit?: number;
/** 读取文件的编码,默认是 utf-8 */
encoding?: BufferEncoding;
}): Promise<{
filePath: string;
fileRelativePath: string;
fileSize: number;
}[]>;