[英]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
插件watch
與files
部分指定的模式匹配的files
。 只要更改了任何匹配文件,就會執行任務中提到的tasks
。
例如,讓我們考慮您問題中的監視任務
watch:{
sass:{
files: 'sass/*.scss',
tasks: ['sass','cssmin']
}
}
在這里, sass
只是操作的名稱。 它可以是任何東西; 但由於該操作編譯Saas文件,因此該操作名為saas
。
每當更改sass
目錄中的任何scss
文件時,都會觸發操作saas
,執行saas
和cssmin
任務,這些任務應該在之前定義。
參考文獻:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.