簡體   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