makit
Version:
Make in JavaScript done right!
36 lines (35 loc) • 1.16 kB
TypeScript
import { TimeStamp } from './fs/time-stamp';
import { Rule } from './makefile/rule';
import { DirectedGraph } from './utils/graph';
import { Reporter } from './reporters/reporter';
export interface MakeOptions {
root?: string;
reporter: Reporter;
disableCheckCircular?: boolean;
matchRule: (target: string) => [Rule, RegExpExecArray] | null;
}
/**
* 一个 Make 对象表示一次 make
* 每次 make 的入口 target 是唯一的,其依赖图是一个有序图,用 checkCircular 来确保这一点
*/
export declare class Make {
dependencyGraph: DirectedGraph<string>;
private targets;
private tasks;
private root;
private matchRule;
private reporter;
private disableCheckCircular;
private isMaking;
private targetQueue;
constructor({ root, matchRule, disableCheckCircular, reporter }: MakeOptions);
make(targetName: string, parent?: string): Promise<TimeStamp>;
private startMake;
invalidate(targetName: string): void;
private buildDependencyGraph;
private isResolved;
private doMake;
private notifyDependants;
private scheduleTask;
private createTarget;
}