Grunt是一款使用JavaScript开发的开源的web前端构建工具,它是基于nodejs的。
- 新建一个工程目录grunt,进入此目录下
- 使用yarn init -y 创建package.json文件
- 安装grunt: yarn add grunt --dev
- 在当前grunt目录下创建一个gruntfile.js文件: Grunt的入口文件,用于定义一些需要grunt自动执行的任务,需要导出一个函数,此函数接受一个grunt的形参,内部提供一些创建任务时可以用到的API
module.exports = grunt => {
//加载指定插件任务
grunt.loadNpmTasks('grunt-contrib-clean')
//构建任务配置 grunt.initConfig({
foo:{
bar:123 },
clean:{
temp:'temp/**'
},
build:{
options:{
foo:'bar'
},
css:{
options:{
foo:'111'
}
},
js:'2a'
}
})
//多目标模式,可以让任务根据配置形成多个子任务
grunt.registerMultiTask('build',function(){
// console.log('build task');
console.log(this.options());
console.log(`target:${this.target}:${this.data}`);
})
//注册任务
grunt.registerTask('foo', ()=>{
console.log(grunt.config('foo.bar'));
})
grunt.registerTask('bar','任务描述', ()=>{
console.log('bar task');
})
grunt.registerTask('bad',()=>{
console.log('bar task~');
return false
})
grunt.registerTask('default',['foo','bad', 'bar'])
//注册异步任务
grunt.registerTask('async-task',function(){
const done = this.async()
setTimeout(()=>{
console.log('async task~~');
done()
},1000)
})
grunt.registerTask('async-bad',function() {
const done = this.async()
setTimeout(()=>{
console.log('bad async~~');
done(false)
},1000)
})
}
文件的简单正则匹配:
1. 指匹配了除了/外的任意数量的字符,比如.js匹配以.js结尾的所有文件
2. ?之匹配除了/外的单个字符
3. 指匹配包含/的任意数量的字符,比如'temp/'
4. !指排除指定文件,比如'!temp/a.js'
5. {}可以理解为"or"表达式,比如'temp/{a,b}.js'