javascript - GruntJS 链表

标签 javascript gruntjs grunt-contrib-watch

考虑这个示例配置(请注意,为了简短起见,我省略了依赖项):

module.exports = function(grunt) {

    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        sass: {
            dev: {
                files: {
                    'style.css': 'custom.scss'
                }
            },
        },
        watch: {
            options: {
                livereload: true
            },
            css: {
                files: ['css/sass/**/*.scss'] ,
                tasks: ['sass:dev']
            },
            js:{
                files: ['js/**/*.js']
            },
            html:{
                files: ['templates/**/*.html']
            },
            dontRun:{
                files: ['/randomdir/*'],
                tasks:['randomtask']
            }
        }
    });

    grunt.registerTask('default', ['watch']);
};

如何启动监视并执行 css、js 和 html 而不是 dontRun 的监视?

我试过:

grunt.registerTask('default', ['watch:css:js:html']);
grunt.registerTask('default', ['watch:css','watch:js','watch:html']);

但是这两个都只是执行第一个watch,第二个和第三个都没有开始。

最佳答案

这是因为 Grunt 只能运行一系列任务。因此 watch 任务只能与一个目标或所有目标一起运行。

不过,您可以使用动态别名任务来解决此限制:

grunt.registerTask('watchweb', function() {
  // Remove the targets you dont want
  grunt.config('watch.dontRun', null);
  // Then run the watch task after this task is done
  grunt.task.run('watch');
});

使用 grunt watchweb 运行。

或者适用于任何配置的更健壮和通用的解决方案是:

// Run with: grunt switchwatch:target1:target2 to only watch those targets
grunt.registerTask('switchwatch', function() {
  var targets = Array.prototype.slice.call(arguments, 0);
  Object.keys(grunt.config('watch')).filter(function(target) {
    return !(grunt.util._.indexOf(targets, target) !== -1);
  }).forEach(function(target) {
    grunt.log.writeln('Ignoring ' + target + '...');
    grunt.config(['watch', target], {files: []});
  });
  grunt.task.run('watch');
});

关于javascript - GruntJS 链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22186476/

相关文章:

javascript - 使用水平滚动显示 Wordpress 帖子缩略图

visual-studio-2013 - 如何将自定义事件绑定(bind)到 VS 2013 中的 grunt 任务运行器

javascript - Angular:将输入数字限制为两位小数的更好方法?

javascript - 页面对象设计 : Is there a Javascript equivalent to Ruby gem "site_prism"

node.js - 需要 grunt@>=0.4.0 的同伴

javascript - 如何有条件地编译(使用 Grunt)仅使用模板包含更改的 Jade 文件

node.js - 当我运行 Grunt 时,我收到以下消息 : Local npm module "grunt-contrib-copy" not found. Is it is installed?

gruntjs - Grunt 任务 - 释放端口

javascript - 如何在渲染之前将异步返回值插入到 prop 中?

javascript - Gulp 替换不是重命名文件,而是替换文件内容