没有闲话和grunt.initConfig()
grunt.initConfig()为Gruntfile.js的核心部分,它接收对象作为参数。
对象包含两种类型的属性,一种是单纯的变量,一种是task类型。举个栗子:
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'), //单纯的变量,像我一样单纯
concat: {} //task类型
});
PS:所有单纯的变量可以'prefix<%=var%>suffix'的形式读取
task类型也包含两种类型的属性,一种是options,一种是具体的task(标准说法为target)
target同样包含两种类型的属性,一种是options,覆盖task类型的options,一种是files
以下例子使用grunt-contrib-concat,用于文件的合并
concat : {
options : {
separator : ';', //被覆盖
banner : '/*<%= grunt.template.today("yyyy-mm-dd") %>*/'
},
test : {
options : {
separator : '<%= grunt.util.linefeed %>'
},
files : [{
dest : 'dest/hello.js',
src : ['src/*.js']
}
]
}
}
结构如下图
files部分是所有插件通用的,但options视task不同而不同,以下介绍files
files有三种写法,例子中最标准且复杂的一种
//第一种,满足所有要求
files : [{
dest : 'dest/hello.js',
src : ['src/*.js']
}
]
//第二种,无法设置其他参数
files : {
'dest/hello.js' : ['src/*.js']
}
//第三种,只能设置单个任务
dest : 'dest/hello.js',
src : ['src/*.js']
另外files中的path支持5种通配符
- *匹配separator之外的所有字符0-N
- ?匹配separator之外的所有字符1
- **匹配所有字符0-N
- {}匹配其中逗号分隔的表达式
- !反集合
最后是files的各个属性,分为两个部分,基础(src、dest、filter、nonull、dot、matchBase、expand)和扩展(cwd、ext、flatten、rename)
src: string or array 源文件
dest: string 目标文件
filter: function 传入src中各文件的filepath,筛选出返回true的作为源文件
string fs.Stats(node中的检测文件类型的类)的方法名
- isFile 普通文件
- isDirectory 文件夹
- isBlockDevice 块设备文件(POSIX概念,比如移动硬盘对应的文件)
- isCharacterDevice 字符设备文件(POSIX概念,比如键盘鼠标对应的文件)
- isSymbolicLink 软链接文件(POSIX概念,理解成windows下的快捷方式吧)
- isFIFO (POSIX概念,管道文件,用于进程间通信)
- isSocket (POSIX概念,套接字文件,用于端口通信)
nonull: 嗯,不太懂
dot: boolean 以.开头的文件(linux中的隐藏文件)亦作为源文件,默认为false
matchBase: 可能存在理解的偏差
我的case使用了下面的expand,目录结构为src下123/acb,acb/123,使用如下配置
files: [{
expand: true,
cwd: 'src/',
src: ['a?b'],
dest: 'dist/'
}]
目标文件夹下将出现acb文件夹,但不包含任何文件,而添加matchBase后
files: [{
expand: true,
cwd: 'src/',
src: ['a?b'],
dest: 'dist/',
matchBase: true
}]
目标文件夹下将出现acb文件夹和123文件夹,acb文件夹为空,123文件夹下包含acb文件
expand: boolean 启用扩展属性,默认为false
dest(expand): string 目标文件夹
cwd: string src的相对路径
ext: string 生成文件的后缀名
expand: true,
cwd: 'src/',
src: ['*.js'],
dest: 'dest/',
ext: '.min.js'
flatten: boolean 为true则生成的文件统一放在dest文件夹中,无子文件夹,默认为false
expand: true,
cwd: 'src/',
src: ['*.js', '**/*.js'],
dest: 'dest/',
ext: '.min.js',
flatten: true
rename: function 传入[dest, filepath, files],默认为return dest + filepath;
以上是initConfig的基本配置,还有瑕疵,下一篇开始从各个插件着手具体的应用。
没有闲话和grunt.initConfig()的更多相关文章
- 闲话和grunt
一年半没更新是因为自己转岗了,android framework+system转前端,可以想象过程之苦逼,苦成了一首诗:很烦很烦/非常烦/非常非常十分烦/特别烦特烦/极其烦/贼烦/简直烦死了/啊——. ...
- AngularJS——grunt神器的安装
前言: 刚开始学 angularJS,在慕课网上看的大漠老师的视频(http://www.imooc.com/learn/156),里面刚开始讲述了前端开发-调试-测试所使用的手段和工具,本人对前端开 ...
- grunt之concat、cssmin、uglify
周末有点懒,跑去看了<智取威虎山>,手撕鬼子的神剧情节被徐老怪一条回忆线就解释过去了,牛到极致尽是这种四两拨千斤的处理方式,手撕加分,四星推荐. --------------------- ...
- 初学seaJs模块化开发,利用grunt打包,减少http请求
原文地址:初学seaJs模块化开发,利用grunt打包,减少http请求 未压缩合并的演示地址:demo2 学习seaJs的模块化开发,适合对seajs基础有所了解的同学看,目录结构 js — —di ...
- grunt配置任务
这个指南解释了如何使用 Gruntfile 来为你的项目配置task.如果你还不知道 Gruntfile 是什么,请先阅读 快速入门 指南并看看这个Gruntfile 实例. Grunt配置 Grun ...
- 快速开发Grunt插件----压缩js模板
前言 Grunt是一款前端构建工具,帮助我们自动化搭建前端工程.它可以实现自动对js.css.html文件的合并.压缩等一些列操作.Grunt有很多插件,每一款插件实现某个功能,你可以通过npm命名去 ...
- 应用Grunt自动化地优化你的项目前端
在不久前我曾写了一篇 应用r.js来优化你的前端 的文章,为大家介绍了r.js这个实用工具,它可以很好地压缩.合并前端文件并打包整个项目.但是如果将r.js放到项目中,我们不得不顾及到一个问题——项目 ...
- Grunt(页面静态引入的文件地址的改变探究)-V2.0
相关插件的引用: grunt-usemin 对页面的操作 grunt-contrib-cssmin 压缩css load-grunt-tasks 瘦身gruntfile grunt-rev给md5 ...
- grunt自定义任务——合并压缩css和js
npm文档:www.npmjs.com grunt基础教程:http://www.gruntjs.net/docs/getting-started/ http://www.w3cplus.com/to ...
随机推荐
- 用 Node.js 把玩一番 Alfred Workflow
插件地址(集成Github.掘金.知乎.淘宝等搜索) 作为 Mac 上常年位居神器榜第一位的软件来说,Alfred 给我们带来的便利是不言而喻的,其中 workflow(工作流) 功不可没,在它上面可 ...
- python--DenyHttp项目(1)--socket编程:服务器端进阶版socketServer
在网上看到了SocketServer模块,于是Server端简化: #coding:utf-8 import socketserver class MyTCPHandler(socketserver. ...
- ifconfig命令--查看、配置、启用或禁用网络接口的工具
ifconfig 是一个用来查看.配置.启用或禁用网络接口的工具,这个工具极为常用的.可以用这个工具来临时性的配置网卡的IP地址.掩码.广播地址.网关等.也可以把它写入一个文件中(比如/etc/rc. ...
- MySQL、Oracle数据库之操作系统版本选择
玩了快五年的Oracle,期间接触的操作系统大都是linux和aix,其中linux大部分为5.8的红帽子以及centos,oracle可以在上边运行稳定且需要安装其他与oracle相关的rpm包都是 ...
- charAt()的功能
<script type="text/javascript"> var str="Hello world!" document.write(str. ...
- [NOIP2015] 斗地主 大爆搜
考试的时候想了半天,实在是想不到解决的办法,感觉只能暴力..然后暴力也懒得打了,小数据模拟骗30分hhh 然而正解真的是暴力..大爆搜.. 然后我的内心拒绝改这道题(TAT) 不过在wcx大佬的帮助下 ...
- salesforce 得到下拉列表控制依赖值的方法
salesforce中得到下拉列表的控制依赖值没有系统提供的方法.在网上找了一些,自己也编辑了一下. public static List<Integer> B64ToBytes (Str ...
- Git基础命令的使用
当前git版本: git version 2.9.2.windows.1 1.创建一个能与git服务器连接的本地git库 本地: git init git status (-s) git add . ...
- MySQL连接问题【如何解决MySQL连接超时关闭】
--MySQL连接问题[如何解决MySQL连接超时关闭] ------------------------------------------------转载 最近做网站有一个站要用到WEB网页采集器 ...
- iOS - Block底层解析
Block是iOS开发中一种比较特殊的数据结构,它可以保存一段代码,在合适的地方再调用,具有语法简介.回调方便.编程思路清晰.执行效率高等优点,受到众多猿猿的喜爱.但是Block在使用过程中,如果对B ...