add preprocessors to plugins

This commit is contained in:
Xiaohan Zhang
2015-07-21 21:36:09 -07:00
parent 6baa15a0d7
commit cc42d530f8
2 changed files with 42 additions and 0 deletions
+24
View File
@@ -11,3 +11,27 @@ less.render("fail").then((output) => {
}, (error: Less.RenderError) => {
console.log("rejected as expected on line number " + error.line);
});
var preProcessor: Less.PreProcessor = {
process: (src, extra) => {
console.log(extra.imports, extra.context);
if (extra.fileInfo.filename === "foo.less") {
return ".other-rule { width: (1 + 1); }\n " + src;
} else {
return src;
}
}
};
var myPlugin: Less.Plugin = {
install: (less, pluginManager) => {
alert(less.version[2]);
pluginManager.addPreProcessor(preProcessor, 1000);
}
};
var options: Less.Options = {
plugins: [myPlugin]
};
less.render("h1 { background: red; }", options);
+18
View File
@@ -30,12 +30,30 @@ declare module Less {
class PluginManager {
constructor(less: LessStatic);
addPreProcessor(preProcessor: PreProcessor, priority?: number): void;
}
interface Plugin {
install: (less: LessStatic, pluginManager: PluginManager) => void;
}
interface PreProcessor {
process: (src: string, extra: PreProcessorExtraInfo) => string;
}
interface PreProcessorExtraInfo {
context: {
pluginManager: PluginManager;
};
fileInfo: RootFileInfo;
imports: {
[key: string]: any;
};
}
interface SourceMapOption {
sourceMapURL: string;
sourceMapBasepath: string;