[英]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.