【发布时间】:2017-01-31 15:26:31
【问题描述】:
我目前正在尝试提出一个 gulp 任务,该任务将构建与特定 .less 文件相关联的整个 .csproj 文件,只要该 .less 文件发生更改。
我已经有一个工作任务可以做到这一点,但是我面临的限制是 .less 文件必须位于相对于 .csproj 文件的特定位置。如果 .less 文件在目录中更深/更高一级,我用来构建 .csproj 文件的方法将无法找到要构建的正确 .csproj 文件。
我当前的任务很大程度上基于 Kamsar 的 Sitecore 栖息地回购中的一项任务: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 中做到这一点?
【问题讨论】:
标签: javascript c# visual-studio gulp