本篇主要讲在Gruntfile文件配置。
任务配置
假设我需要创建concat和uglify两个JSON格式的任务以及my_property字符串格式任务和my_src_files数组格式的任务
直接举个例子:
从上图可知:由于这本身就是JavaScript,因此你不仅限于使用JSON;你可以在这里使用任何有效的JavaScript。必要的情况下,你甚至可以以编程的方式生成配置。
注意:当运行一个任务时,Grunt会自动查找配置对象中的同名属性。
目标配置
目标就是每个任务需要执行的目标,举个例子:
在上面的案例中,concat任务有名为foo和bar两个目标,而uglify任务仅仅只有一个名为bar目标。
我们可以执行特定的目标,比如直接在文件夹里右键直接调出gitBash,执行如下命令:
如果我们使用了grunt concat命令,则将遍历所有目标(foo目标,bar目标)并依次处理。
options属性
options对象是可选的,如果不需要,可以忽略。
需要注意:
(1)在一个任务配置中,options属性可以用来指定覆盖内置属性的默认值。
(2)此外,每一个目标中还可以设置专有options属性。
(3)目标里面的options将会覆盖任务级的options。
举个例子:
src-dest配置
每个任务都有src-dest(源文件-目标文件),当然dest可以没有。
比如jshint插件是验证JS语法的,错误的信息都直接显示在console上面,无须专门创建个dest文件。
(1)src-dest数组格式
这种方式比较直观,建议使用此方法。
举个例子:
(2)src-dest文件对象格式
好处:
(1)每个目标对应多个src-dest形式的文件映射
(2)key就是目标文件,value就是源文件
(3)源文件一般需要用数组
举个例子:
或者:
过滤函数配置
可有可无,看自己需要。
比如node的模块系统fs里面isFile是检查是否是文件的方法,举个过滤器的例子:
或者创建你自己的filter函数,根据文件是否匹配来返回true或者false。
下面的例子将仅仅清理一个空目录:
文件路径配置
src-dest里面需要用到文件路径,通常分别指定所有源文件路径是不切实际的。
(1)通配符模式
通常分别指定所有源文件路径是不切实际的,但是我们可以用grunt提供的简写符,类似于正则里面的各种元字符,下面来看看:
比如:
具体举个代码例子:
(2)模板模式
①使用内部数据的模板
格式是
举个例子:
②导入外部数据的模板
假设想引入package.json里面的数据,内容如下:
动态构建文件对象(选读)
当你希望处理大量的单个文件时,这里有一些附加的属性可以用来动态的构建一个文件列表。这些属性都可以用于Compact和Files Array文件映射格式。
expand 设置为true用于启用下面的选项:
- cwd:所有src指定的匹配都将相对于此处指定的路径(但不包括此路径)。
- src:相对于cwd路径的匹配模式。
- dest:目标文件路径前缀。
- ext:对于生成的dest路径中所有实际存在文件,均使用这个属性值替换扩展名。
- extDot:用于指定标记扩展名的英文点号的所在位置。可以赋值 ‘first’ (扩展名从文件名中的第一个英文点号开始) 或 ‘last’ (扩展名从最后一个英文点号开始),默认值为 ‘first’ [添加于 0.4.3 版本]
- flatten:从生成的dest路径中移除所有的路径部分。
- rename:对每个匹配的src文件调用这个函数(在重命名后缀和移除路径之后)。dest和匹配的src路径将被作为参数传入,此函数应该返回一个新的dest值。 如果相同的dest返回不止一次,那么,每个返回此值的src来源都将被添加到一个数组中作为源列表。
举个例子: