Grunt监视任务而不是文件?

时间:2015-07-14 13:33:57

标签: javascript sass gruntjs

我是Grunt的新手,我看了一些关于手表插件的教程。例子:

watch:{
 sass:{
  files: 'sass/*.scss',
  tasks: ['sass','cssmin']
 }
}

我的问题是为什么我需要观看另一个像“sass”这样的插件而不是观看实际文件'sass / * .scss'?

我不明白,观看插件/任务而不是文件是不合逻辑的。

为什么我不能这样打电话:

watch:{
      files: 'sass/*.scss',
      tasks: ['sass','cssmin']
    }

如果我还要关注我的js文件怎么办?我是否还需要将它放在sass任务的文件中?将js文件放入sass任务中是没有意义的......

2 个答案:

答案 0 :(得分:1)

并不是说你在“观察”该插件,而是在文件发生变化时你正在观看一组文件并运行任务。 tasks规范是指定所需任务的地方。因此,在这种情况下,您将运行sass和cssmin任务。

答案 1 :(得分:1)

你绝不是在看插件。假设你有另一个插件少,你想在不同的文件集上工作。你会怎么做?

watch {
    sass: ...

    less: ...

    uglify: ...
}

即使你把js文件与sass放在一起(忽略它是一种可怕的做法),当grunt在该文件上调用sass时,什么都不会发生。

作为一个例子

module.exports = function (grunt) {

    grunt.initConfig({

        jshint: {
            // ...
        },

        uglify: {
            // ...
        },

        sass: {
            // ...
        },

        foo: {
            // ...
        },

        watch: {
            javascript: {
                files: 'javascripts/*/**.js',
                tasks: ['jshint', 'uglify']
            },
            sass: {
                files: 'sass/*/**.scss',
                tasks: ['sass', 'foo']
            }
        }

    });

    // ...

};

js有不同的观察者,比如uglify。