如果模板更改,则重建所有文件
Rebuild all files if template changes
我正在使用 gulp 将降价文件转换为 HTML,并使用 gulp-watch plugin (not the gulp.watch API 函数)在文件发生变化时重建文件。效果很好!
gulp.task('markdown', function () {
gulp.src('src/**/*.md')
.pipe(watch('src/**/*.md'))
.pipe(markdown())
.pipe(template('templates/md.tpl'))
.pipe(gulp.dest('dist'));
});
问题是管道 src
是降价文件,但在管道内我还引用了一个模板文件。如果该模板发生更改,则需要重建所有降价文件。有没有办法在 gulp/gulp-watch 中表达这种依赖?
我尝试使用 gulp.watch(API 函数)来观察模板和 运行 'markdown' 任务(如果它发生变化)...
gulp.watch('templates/md.tpl', ['markdown']);
...但这没有用。什么都没发生。我假设在管道中有 gulp-watch 会阻止它做任何事情。
我想我可以创建两个任务,一个有 gulp-watch,一个没有,然后使用一个没有强制完全重建。我宁愿不这样做,因为那样的话,保持两者同步就成了一个持续的问题。
有没有更好的方法?
可以指定gulp src
为数组,到:
gulp.src(['src/**/*.md', 'templates/md.tpl'])
I guess I could create a two tasks, one with gulp-watch and one without, and use the one without to force a full rebuild. I'd rather not, because then it becomes an ongoing problem to keep the two in sync.
记住,gulp 就是 JavaScript。
只需编写一个函数,根据您传递的参数,使用或不使用 watch()
步骤构造流。 gulp-if
插件可以让你以非常简洁的方式编写类似这样的东西(尽管这不是必需的,没有它也可以完成)。
我会这样做:
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});
});
});
我正在使用 gulp 将降价文件转换为 HTML,并使用 gulp-watch plugin (not the gulp.watch API 函数)在文件发生变化时重建文件。效果很好!
gulp.task('markdown', function () {
gulp.src('src/**/*.md')
.pipe(watch('src/**/*.md'))
.pipe(markdown())
.pipe(template('templates/md.tpl'))
.pipe(gulp.dest('dist'));
});
问题是管道 src
是降价文件,但在管道内我还引用了一个模板文件。如果该模板发生更改,则需要重建所有降价文件。有没有办法在 gulp/gulp-watch 中表达这种依赖?
我尝试使用 gulp.watch(API 函数)来观察模板和 运行 'markdown' 任务(如果它发生变化)...
gulp.watch('templates/md.tpl', ['markdown']);
...但这没有用。什么都没发生。我假设在管道中有 gulp-watch 会阻止它做任何事情。
我想我可以创建两个任务,一个有 gulp-watch,一个没有,然后使用一个没有强制完全重建。我宁愿不这样做,因为那样的话,保持两者同步就成了一个持续的问题。
有没有更好的方法?
可以指定gulp src
为数组,到:
gulp.src(['src/**/*.md', 'templates/md.tpl'])
I guess I could create a two tasks, one with gulp-watch and one without, and use the one without to force a full rebuild. I'd rather not, because then it becomes an ongoing problem to keep the two in sync.
记住,gulp 就是 JavaScript。
只需编写一个函数,根据您传递的参数,使用或不使用 watch()
步骤构造流。 gulp-if
插件可以让你以非常简洁的方式编写类似这样的东西(尽管这不是必需的,没有它也可以完成)。
我会这样做:
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});
});
});