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

用户254694

我有一个大任务

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)];

}

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

是否可以选择将其设置为每次编译,还是可以使用其他插件来进行编译。

Avcajaraville

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

因此,它是这样工作的:它将获取流中的所有文件,对其进行处理,然后将它们“连续”发送到下一个管道。

这就是为什么您的函数getClassName仅执行一次。

为了完成您想要的工作,您必须考虑独立地操作每个文件,因此,您将大吃一惊。

有了每个文件路径后,就可以在该文件上运行任务(现在是一个函数)。该任务基本上将提取流中每个文件的路由,并调用函数compileMarkdown,这是您的“老” gulp任务。现在,这将对每个文件执行一次,因此,您的getClassName函数将对每个文件执行一次,从而生成“随机类”(认真研究该函数,我依靠的是工作正常的事实)。

本示例使用以下插件:https : //www.npmjs.org/package/glob-to-vinyl/以便处理流中的每个文件。

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

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)];
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

无法将值传递到文档模板

来自分类Dev

Django:将值从模板传递到视图

来自分类Dev

将值从模板传递到 Django 视图

来自分类Dev

Gulp任务-将var传递到下一个管道

来自分类Dev

将列表值传递到t4模板

来自分类Dev

将值从Django视图传递到AngularJS插入的模板

来自分类Dev

将值从数组传递到流星中的子模板

来自分类Dev

将多个模板输入传递到Argo Workflow值

来自分类Dev

Django如何将值从模板传递到视图

来自分类Dev

将值从Django视图传递到AngularJS插入的模板

来自分类Dev

如何将变量传递到YAML管道中任务条件的模板

来自分类Dev

Jade:如何将随机变量传递到包含的模板中?

来自分类Dev

使用管道将输入传递到passwd

来自分类Dev

在Azure管道中将变量传递到Yaml模板(如参数)

来自分类Dev

如何将gulp.watch()传递给管道?

来自分类Dev

将数据传递到Vue模板

来自分类Dev

AngularJS将变量传递到模板

来自分类Dev

将静态路径传递到包含的模板

来自分类Dev

将JSON数据传递到模板

来自分类Dev

将数据传递到主模板

来自分类Dev

将当前节点传递到调用模板

来自分类Dev

将数据传递到烧瓶模板

来自分类Dev

将数据传递到Vue模板

来自分类Dev

将值传递到sharedClient

来自分类Dev

将值从下拉菜单传递到Flask模板

来自分类Dev

仅在mvc 6中将值从EditorTemplate传递到其布局模板

来自分类Dev

在Django中,如何将所选下拉值从模板传递到视图?

来自分类Dev

流星/铁路由器-如何将值从RouteController传递到模板帮助器