Grunt-Web前端构建工具

357 阅读1分钟

Grunt是一款使用JavaScript开发的开源的web前端构建工具,它是基于nodejs的。

  1. 新建一个工程目录grunt,进入此目录下
  2. 使用yarn init -y 创建package.json文件
  3. 安装grunt: yarn add grunt --dev
  4. 在当前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'