Gulp 如果模板更改,则重新生成所有文件
我使用gulp将标记文件转换为HTML,并使用插件(notAPI函数)在文件更改时重建文件。很好Gulp 如果模板更改,则重新生成所有文件,gulp,gulp-watch,Gulp,Gulp Watch,我使用gulp将标记文件转换为HTML,并使用插件(notAPI函数)在文件更改时重建文件。很好 gulp.task('markdown',function(){ gulp.src('src/***.md') .pipe(监视('src/***/.md')) .pipe(标记()) .pipe(模板('templates/md.tpl')) .pipe(大口目的地('dist')); }); 问题是管道src是标记文件,但在管道中我也引用了一个模板文件。如果该模板发生更改,则需要重新生成所有标
gulp.task('markdown',function(){
gulp.src('src/***.md')
.pipe(监视('src/***/.md'))
.pipe(标记())
.pipe(模板('templates/md.tpl'))
.pipe(大口目的地('dist'));
});
问题是管道src
是标记文件,但在管道中我也引用了一个模板文件。如果该模板发生更改,则需要重新生成所有标记文件。有没有一种方法可以表达这种依赖性
我尝试使用gulp.watch(API函数)查看模板,如果模板发生变化,则运行“降价”任务
gulp.watch('templates/md.tpl',['markdown']);
。。。但那没用。什么也没发生。我想在管道中安装一块大块头手表可以防止它做任何事情
我想我可以创建两个任务,一个带gulp watch,一个不带,然后使用一个不带的任务强制进行全面重建。我宁愿不要,因为那样的话,保持两者的同步就成了一个持续的问题
有更好的方法吗?您也可以将gulp
src
指定为数组:
gulp.src(['src/**/*.md', 'templates/md.tpl'])
我想我可以创建两个任务,一个带gulp watch,一个不带,然后使用一个不带的任务强制进行全面重建。我宁愿不要,因为那样的话,保持两者的同步就成了一个持续的问题
记住,gulp只是JavaScript
只需编写一个函数,根据您传递的参数,使用或不使用watch()
步骤来构造流。这个插件让你可以用一种非常简洁的方式编写类似的东西(尽管它不是必需的,也可以不用它)
我会这样做:
var gulpIf = require('gulp-if');
function processMarkdown(opts) {
gulp.src('src/**/*.md')
.pipe(gulpIf(opts.watch, watch('src/**/*.md')))
.pipe(markdown())
.pipe(template('templates/md.tpl'))
.pipe(gulp.dest('dist'));
}
gulp.task('markdown', function() {
processMarkdown({watch: true});
watch('templates/md.tpl', function() {
processMarkdown({watch: false});
});
});
我知道可以使用多个通配符来
src
,但我不确定这有什么帮助。更改模板将如何强制所有标记文件重新生成?我不也会在管道中使用模板文件吗?我不想在降价管道中处理模板本身。