我正在尝试提出一个gulp任务,只要该.less文件发生更改,就会构建与特定.less文件关联的整个.csproj文件。
我已经有了一个可以做到这一点的工作任务,但是我面临的限制是.less文件必须位于相对于.csproj文件的特定位置。如果.less文件在目录中更深/更高级别,我用来构建.csproj文件的方法将无法找到要构建的正确.csproj文件。
我目前的任务很大程度上取决于Kamsar在Sitecore的Habitat回购中发现的任务之一:https://github.com/kamsar/Habitat
如下:
gulp.task("Auto-Publish-Less",
function() {
var root = "./src";
var roots = [root + "/**/resources/styles", "!" + root + "/**/obj/**/resources/styles"];
var files = "/**/*.less";
gulp.src(roots, { base: root })
.pipe(
foreach(function (stream, rootFolder) {
console.log(rootFolder);
gulp.watch(rootFolder.path + files,
function(event) {
if (event.type === "changed") {
var dest = config.websiteRoot;
console.log("Build project associated with this file: " + event.path);
return gulp.src([event.path + "/../../../*.csproj"]).pipe(publishStream(stream,dest));
}
});
return stream;
}));
});
只要.csproj文件比.less文件高3级,这就行得很好。我还可以添加更多通配符,高2级,高1级等。但是,我想看看gulp.src
中是否有一种方法可以找到"找到"第一个匹配的文件,向上移动目录结构,然后在找到第一个匹配后停止。有没有办法在gulp和/或普通的js中做到这一点?