Gruntjs 如何让grunt watch在不同的构建任务下重新加载HTML更改
我可以通过执行以下操作轻松设置Grunt文件以实时重新加载HTML和SCSS更改:Gruntjs 如何让grunt watch在不同的构建任务下重新加载HTML更改,gruntjs,grunt-contrib-watch,Gruntjs,Grunt Contrib Watch,我可以通过执行以下操作轻松设置Grunt文件以实时重新加载HTML和SCSS更改: watch: { options: { livereload: true, }, css: { files: ['scss/*.scss'], tasks: ['compass'] }, html: { files: ['index.html'], tasks: ['build'] }
watch: {
options: {
livereload: true,
},
css: {
files: ['scss/*.scss'],
tasks: ['compass']
},
html: {
files: ['index.html'],
tasks: ['build']
}
}
watch: {
options: {
livereload: true,
},
dev: {
html: {
files: ['<%%= yeoman.app %>/*.html',
'<%%= yeoman.app %>/**/*.html'],
tasks: ['dev']
},
css: {
files: ['<%%= yeoman.app %>/assets/scss/*.scss'],
tasks: ['compass']
}
},
dist: {
html: {
files: ['<%%= yeoman.app %>/*.html',
'<%%= yeoman.app %>/**/*.html'],
tasks: ['build']
},
css: {
files: ['<%%= yeoman.app %>/assets/scss/*.scss'],
tasks: ['compass'],
}
}
}
但是,我有一个用于开发环境的构建任务:dev
,还有一个用于生产环境的构建任务:build
。因此,当HTML更改时调用build
,将为生产构建站点,如果我只想要开发版本,这不是我想要的
理想情况下,我会这样做:
watch: {
options: {
livereload: true,
},
css: {
files: ['scss/*.scss'],
tasks: ['compass']
},
html: {
files: ['index.html'],
tasks: ['build']
}
}
watch: {
options: {
livereload: true,
},
dev: {
html: {
files: ['<%%= yeoman.app %>/*.html',
'<%%= yeoman.app %>/**/*.html'],
tasks: ['dev']
},
css: {
files: ['<%%= yeoman.app %>/assets/scss/*.scss'],
tasks: ['compass']
}
},
dist: {
html: {
files: ['<%%= yeoman.app %>/*.html',
'<%%= yeoman.app %>/**/*.html'],
tasks: ['build']
},
css: {
files: ['<%%= yeoman.app %>/assets/scss/*.scss'],
tasks: ['compass'],
}
}
}
再次调用watch:dev
或watch:dist
,但这样做的缺点是,我不想在更改少量SCS时重建整个站点
有什么方法可以实现我想要的吗?尝试动态别名任务:
grunt.registerTask('watchit', function(type) {
grunt.config('watch.html.tasks', type);
grunt.task.run('watch');
});
然后用grunt-watchit:build
或grunt-watchit:dev
调用它,在两者之间切换
这里有更多信息:感谢您指出,我没有联系到在这种情况下,这是一项动态任务。