template-syncer
Version:
智能模板同步工具 - 让你的项目与模板仓库保持同步,支持智能合并、差异对比和交互式更新
117 lines (116 loc) • 2.55 kB
TypeScript
/**
* 文件信息
*/
export interface FileInfo {
/** 相对路径 */
path: string;
/** 绝对路径 */
fullPath: string;
/** 文件大小 */
size: number;
/** 是否为二进制文件 */
isBinary: boolean;
/** 文件分类 */
category: string;
/** 显示图标 */
icon: string;
}
/**
* 文件变更信息
*/
export interface FileChange extends FileInfo {
/** 变更状态 */
status: 'new' | 'modified' | 'deleted';
/** 模板文件路径 */
templatePath: string;
/** 当前文件路径 */
currentPath: string;
/** 是否选中 */
selected: boolean;
}
/**
* 同步器配置选项
*/
export interface SyncerOptions {
/** 模板仓库 URL */
repo?: string;
/** 分支名称 */
branch?: string;
/** 临时目录 */
tempDir?: string;
/** 详细输出 */
verbose?: boolean;
/** 自定义忽略模式 */
ignore?: string[];
/** 自定义文件分类规则 */
categories?: CategoryRule[];
/** 自定义合并策略 */
mergers?: Record<string, MergeStrategy>;
/** 同步规则 */
rules?: SyncRules;
}
/**
* 同步规则配置
*/
export interface SyncRules {
/** 删除本地独有文件 */
deleteOrphans?: boolean;
/** 删除匹配这些模式的本地独有文件 */
deletePatterns?: string[];
/** 保护这些文件不被删除 */
protectPatterns?: string[];
/** 同步前自动备份 */
autoBackup?: boolean;
/** 默认合并策略 */
defaultMergeStrategy?: MergeStrategy;
}
/**
* 持久化配置
*/
export interface SyncConfig {
repo?: string;
branch?: string;
ignore?: string[];
categories?: CategoryRule[];
mergers?: Record<string, MergeStrategy>;
/** 同步规则 */
rules?: SyncRules;
lastSync?: string;
}
/**
* 文件分类规则
*/
export interface CategoryRule {
/** 匹配模式 (glob 或正则) */
match: string;
/** 分类名称 */
category: string;
/** 显示图标 */
icon: string;
/** 优先级 (越高越优先) */
priority?: number;
}
/**
* 合并策略
*/
export type MergeStrategy = 'overwrite' | 'skip' | 'smart' | 'ask';
/**
* 批量操作结果
*/
export interface BatchResult {
success: string[];
skipped: string[];
failed: Array<{
path: string;
error: string;
}>;
}
/**
* 推荐操作
*/
export interface Recommendation {
priority: 'high' | 'medium' | 'low';
title: string;
description: string;
files: FileChange[];
}