【发布时间】:2015-07-20 10:18:25
【问题描述】:
我想知道是否有办法将参数从 gulp-watch 传递到 gulp-sass。为了自定义 gulp-sass 任务。
如果我可以根据 gulp-watch 任务正在监视的文件传递参数,我可以只有一个任务,我有两个任务。假设如果文件 framework.scss 正在更改,我可以简单地通过 watch 将相关的 src 参数传递给 sass 任务来更改 gulp.src(src) 值。因为这是两个任务的唯一区别。
基本上我正在尝试使 gulp-sass 任务动态化。然后我可以简单地将 if 语句放入 gulp-watch 任务中,该任务将跟踪正在更改的文件并根据 if 语句的结果将参数传递给 gulp-sass。
gulp.task('sass:framework', function() {
gulp.src(app.src.scss + '/framework.scss')
.pipe(sourcemaps.init())
.pipe(sass({
includePaths: require('node-bourbon').with(app.fwrk.scss, app.src.scss)
}).on('error', sass.logError))
.pipe(rename({suffix: '.min'}))
.pipe(sourcemaps.write())
.pipe(gulp.dest(app.dest.css))
});
gulp.task('sass:app', function() {
gulp.src(app.src.scss + '/app.scss')
.pipe(sourcemaps.init())
.pipe(sass({
includePaths: require('node-bourbon').with(app.fwrk.scss, app.src.scss)
}).on('error', sass.logError))
.pipe(rename({suffix: '.min'}))
.pipe(sourcemaps.write())
.pipe(gulp.dest(app.dest.css))
});
gulp.task('watch', function() {
livereload.listen(35729, function(err) {
if (err) {
return console.log(err);
}
});
gulp.watch(app.src.scss + '/_settings.scss', ['sass:framework', 'sass:app'])
gulp.watch([app.src.scss + '/app.scss', app.src.scss + '/app/*.scss'], ['sass:app'])
gulp.watch(app.src.scss + '/framework.scss', ['sass:framework'])
gulp.watch([basepath + '/**/**/**/*.php', app.dest.css + '/**/**/*.css', app.dest.js+ '/**/*.js']).on('change', livereload.changed);
});
提前感谢您的帮助。
【问题讨论】:
-
您能否提供更多关于您如何执行监视任务的信息?
-
我只是看scss文件并执行顶部创建的任务,我想做的是简化代码。如果有机会传递参数,我可以跟踪正在更改的文件,然后将所需的变量传递给任务,而不是创建额外的变量。
标签: node.js gulp gulp-watch gulp-sass