使用Gulp构建csproj on。无变化

时间:2017-01-31 15:26:32

标签: javascript c# visual-studio gulp

我正在尝试提出一个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中做到这一点?

1 个答案:

答案 0 :(得分:0)

查看此套餐:

查找包含给定文件或目录的第一个父目录: https://www.npmjs.com/package/find-parent-dir