如何从gulp.dest函数访问gulp.src中提到的路径?

时间:2015-12-28 12:57:42

标签: regex gulp

我在gulp.src函数中使用了一个基于正则表达式的路径,即。,

gulp.task('gen-templateCache', function() {
    return gulp.src('app/client/pages/**/views/**/markup/*.html')
        .pipe(templateCache('new-templates.js'))
        .pipe(gulp.dest(function(file){
            //Access the src path
            //Generate and Return the dest path based on the src path
        }));
});

正如您所看到的,我使用正则表达式'app/client/pages/**/views/**/markup/*.html'来生成此gulp任务的src路径,因为我的源文件位于多个文件夹中。

我的要求是我还需要将结果保存在相对于我的src的多个文件夹中。

即,我们说我的gulp任务结果文件是'template.js'。现在我想将此结果保存在'app/client/pages/**/views/template.js'

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我仍然无法找到解决此问题的通用解决方案,但我能够成功找到适合我特定gulp任务的解决方案:

基本上我在src文件上执行的任务是'gulp-angular-templatecache'(https://www.npmjs.com/package/gulp-angular-templatecache

gulp.task('gen-templateCache', function() {
    var destination = '';
    return gulp.src('app/client/pages/**/views/**/markup/*.html')
        .pipe(templateCache('partials.js', {
            root: '',
            module: 'pageApp',
            transformUrl: function(url) {
                var ind = url.lastIndexOf('\\');
                var partialName = url.substring(ind+1);
                var viewsIndex = url.indexOf('\\views\\');
                var viewsPath = url.substring(0,viewsIndex+7);
                destination = "./app/client/pages/"+viewsPath;
                return partialName;
            }
        }))
        .pipe(gulp.dest(function() {
            return destination;
        }));
});

此解决方案仅适用于上述任务的情况,因为上述任务在第二个参数中采用名为transformUrl的选项,其中inturn是以文件url作为参数的函数。但是,我仍然会欣赏通用解决方案。