任务配置详解—grunt入门之二
2013-09-11 16:00
435 查看
任务配置指的是
这一篇教程将深入讲解任务配置的细节。
构建中有二个关键字:任务(task)和目标(target),一个任务可以包含多个任务目标。
你可以只调用任务中一个目标的执行:
格式是
在initConfig()的参数对象中的属性并非都是任务或目标,比如:
这里的pkg其实是构建配置,在任务中可以使用类似
大部分的任务都带有options配置属性,用于配置插件的参数,比如常见的
以uglify为例(uglify足够典型而且配置参数很丰富)
还有其他有意思的配置,留到下期演示。
大部分的任务目标都是处理文件(watch也算是吧),所以文件的配置是任务目标的核心。
共有二种配置files的方式:
还有一种:
明河推荐大家使用第二种方式,更为简洁直观。
files还支持额外的配置属性(需要额外配置属性时只能使用第一种配置方式。)比如下面的代码:
filter:过滤器(函数),函数参数为files的src,return true时才会构建该文件。
filter函数可以自定义:
grunt.file.isDir()判断filepath是否是目录。
文件名(目录路径)的匹配,基本上和ant一样。
用法举例:
grunt.initConfig({})中的任务配置,上一篇文章我们配置了
uglify(这里指任务名,而不是插件名)任务,用于压缩js文件,接单演示了任务配置的功能。
这一篇教程将深入讲解任务配置的细节。
多任务目标
构建中有二个关键字:任务(task)和目标(target),一个任务可以包含多个任务目标。grunt.initConfig({ //任务:合并文件 concat: { //目标:构建“foo” foo: { }, //目标:构建“bar” bar: { } }, //任务:压缩文件 uglify: { //目标:压缩“bar”目标指定的文件 bar: { } } });
你可以只调用任务中一个目标的执行:
grunt.registerTask('default', ['uglify:bar']);
格式是
任务名:目标名
非任务属性
在initConfig()的参数对象中的属性并非都是任务或目标,比如:grunt.initConfig({ pkg: {author:"minghe",email:"minghe@36@gmail.com"}, //任务:压缩文件 uglify: { //目标:压缩“bar”目标指定的文件 bar: { options: { banner:'/*! <%= pkg.author %>' } } } });
这里的pkg其实是构建配置,在任务中可以使用类似
pkg.author这样的形式获取值。
Options
大部分的任务都带有options配置属性,用于配置插件的参数,比如常见的banner属性,向构建后文件头打印自定义信息。
以uglify为例(uglify足够典型而且配置参数很丰富)
uglify: { bar: { options: { banner:'/*! <%= pkg.author %>*/', //添加文字到压缩后的文件尾部 footer:'/*! 这是压缩文件尾部 */', //美化代码 beautify: { //中文ascii化,非常有用!防止中文乱码的神配置 ascii_only:true } } } }
还有其他有意思的配置,留到下期演示。
Files
大部分的任务目标都是处理文件(watch也算是吧),所以文件的配置是任务目标的核心。共有二种配置files的方式:
uglify: { build: { //源文件 src:'src/hello-grunt.js', //目标文件 dest:'build/hello-grunt-min.js' } }
还有一种:
uglify: { files: { 'build/hello-grunt-min.js': ['src/hello-grunt.js'] } }
明河推荐大家使用第二种方式,更为简洁直观。
files还支持额外的配置属性(需要额外配置属性时只能使用第一种配置方式。)比如下面的代码:
grunt.initConfig({ concat: { bar: { files: [ {src: ['src/bb1.js','src/bbb1.js'], dest: 'dest/b1/', filter: 'isFile'}, ], }, }, });
filter:过滤器(函数),函数参数为files的src,return true时才会构建该文件。
filter函数可以自定义:
grunt.initConfig({ clean: { foo: { src: ['tmp/**/*'], filter:function(filepath) { returngrunt.file.isDir(filepath); }, }, }, });
grunt.file.isDir()判断filepath是否是目录。
文件的简单正则匹配语法
文件名(目录路径)的匹配,基本上和ant一样。*匹配除了/外的任意数量的字符,比如
foo/*.js
?匹配除了/外的单个字符
**匹配包含/的任意数量的字符,比如
foo/**/*.js
!排除指定文件,比如
src: ['foo/*.js', '!foo/bar.js']
{}可以理解为“or”表达式,比如
src: 'foo/{a,b}*.js'
用法举例:
//匹配foo目录下所有th开头的js文件 {src:'foo/th*.js', dest: ...} //等价于{src: ['foo/a*.js', 'foo/b*.js'], dest: ...} {src:'foo/{a,b}*.js', dest: ...} //优先处理bar.js,然后再处理其他文件 {src: ['foo/bar.js','foo/*.js'], dest: ...} //排除处理foo/bar.js文件 src: ['foo/*.js','!foo/bar.js'], dest: ...}
相关文章推荐
- grunt入门之二 任务配置详解
- 任务配置详解—grunt入门指南
- grunt入门讲解3:实例讲解使用 Gruntfile 配置任务
- grunt入门讲解3:实例讲解使用 Gruntfile 配置任务
- Grunt 入门指南2:任务配置
- Grunt 入门教程二:配置任务
- grunt入门讲解3:实例讲解使用 Gruntfile 配置任务
- grunt入门讲解3:实例讲解使用 Gruntfile 配置任务
- grunt入门讲解2:如何使用 Gruntfile 配置任务
- grunt配置任务
- Linux计划任务入门详解
- mybatis之入门到开发(二)之核心配置文件+Mapper映射文件详解
- zabbix配置详解---为新手入门而写
- MongoDB入门教程之主从复制配置详解
- 北京Linux系统入门学习: NTP服务配置详解
- Linux计划任务入门详解
- Hibernate概述、入门、配置文件详解、四大API详解
- Spark性能相关参数配置详解-任务调度篇
- spring定时任务配置与任务类详解
- Grunt教程——Gurnt任务的配置