Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将随机值传递给gulp管道模板_Gulp - Fatal编程技术网

将随机值传递给gulp管道模板

将随机值传递给gulp管道模板,gulp,Gulp,我有一个吞咽任务 gulp.task('markdown', function () { gulp.src('content/*.md') .pipe(newer('assembler/markdown_out')) .pipe(markdown()) .pipe(wrap({ src: 'assembler/markdowntemp/wrapper.html'})) .pipe(fileinclude({

我有一个吞咽任务

gulp.task('markdown', function () {
    gulp.src('content/*.md')
        .pipe(newer('assembler/markdown_out'))
        .pipe(markdown())
        .pipe(wrap({ src: 'assembler/markdowntemp/wrapper.html'}))
        .pipe(fileinclude({
            prefix: '@@',
            basepath: '@file'
        }))
        .pipe(template({classname: getClassName()}))
        .pipe(gulp.dest('assembler/markdown_out'));
});
函数getClassName是

function getClassName(){
 var classnames_size = ["big", "medium", "small", "extrabig"];

 var classShape = ["tvscreen", "oval"];

 return classnames_size[Math.floor(Math.random()*classnames_size.length)] + " " + classShape[Math.floor(Math.random()*classShape.length)];

}
不幸的是,当我运行这个任务时,模板看起来只编译了一次,而我想要的是为传入的每个文件编译模板,这样我就可以生成随机的类名


是否有一个选项可以将它设置为每次编译,或者有一个不同的插件可以做到这一点

您的方法的主要问题是gulp使用“glob并表示文件结构”(gulp官方文档)

这就是它的工作原理:它将获取流中的所有文件,处理它们,并将它们“连续”发送到下一个管道

这就是为什么函数getClassName只执行一次

为了实现您想要的,您必须考虑独立地操作每个文件,因此,您将失去“能力”

获得每个文件路径后,就可以在此文件上运行任务(现在是函数)。 该任务基本上将提取流中每个文件的路径,并调用functioncompileMarkdown,这是您的“旧”吞咽任务。现在,每个文件执行一次,因此,每个文件执行一次getClassName函数,从而生成“random类”(我没有深入研究该函数,我依赖于它工作正常的事实)

此示例使用以下插件:以便处理流中的每个文件

这是代码,希望对你有所帮助

var gulp = require('gulp'),
    globToVinyl = require('glob-to-vinyl');

gulp.task('markdown', function() {
  globToVinyl('content/*.md', function(err, files){
    for (var file in files) {
      compileMarkdown(files[file].path);
    }
  });
});

function compileMarkdown(file) {
  gulp.src('file')
    .pipe(newer('assembler/markdown_out'))
    .pipe(markdown())
    .pipe(wrap({ src: 'assembler/markdowntemp/wrapper.html'}))
    .pipe(fileinclude({
        prefix: '@@',
        basepath: '@file'
    }))
    .pipe(template({classname: getClassName()}))
    .pipe(gulp.dest('assembler/markdown_out'));
}

function getClassName(){
  var classnames_size = ["big", "medium", "small", "extrabig"];
  var classShape = ["tvscreen", "oval"];
  return classnames_size[Math.floor(Math.random()*classnames_size.length)] + " " + classShape[Math.floor(Math.random()*classShape.length)];
}