繁体   English   中英

Grunt监视任务而不是文件?

[英]Grunt watch for tasks instead for files?

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

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

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

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

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

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

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

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

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

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。

watch插件watchfiles部分指定的模式匹配的files 只要更改了任何匹配文件,就会执行任务中提到的tasks

例如,让我们考虑您问题中的监视任务

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

在这里, sass只是操作的名称。 它可以是任何东西; 但由于该操作编译Saas文件,因此该操作名为saas

每当更改sass目录中的任何scss文件时,都会触发操作saas ,执行saascssmin任务,这些任务应该在之前定义。

参考文献:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM