读取本地的json文件:
pak:grunt.file.readJSON("package.json");
加载包:
grunt.loadNpmTask("包名");
这样是一个一个的加载,那么如果有多个要写加载多个包名
使用 require("load-grunt-tasks")(grunt);
会把package.json 中的 devDependencies 的依赖包都加载进来
options之外的名称都是任务名称名
运行任务
grunt 任务名
如果有多个任务
可以使用 grunt 任务名:target
注册任务
grunt.registerTask("任务名1":"上面定义任务名称");
grunt.registerTask("任务名2":["上面定义任务名称","上面定义任务名称","上面定义任务名称"]);
grunt.registerTask("任务名3":["任务名1","任务名2"]);
grunt.registerTask("test",function(target){
if(target=='watch'){
grunt.task.run(['uglify','clean']);
}
});
如果是数组直接放任务名称,如果是方法,则通过run运行数组任务
开发项目权限
MIT > BSD > ISC > Apache > GPL
dist:{
src:[''],
dest:''
}
dist:{
files:[
{
src:'',
dist:''
},
{
src:'',
dist:''
}
]
}
dist:{
files:{
'src':'dest',
'src':'dest',
'src':['dest']
}
}
* 匹配所有字符但不匹配反斜杠
**/* 代表所有 可以有反斜杠
{a,b}.js -> a.js b.js
filter:的值可以是fs.Stats 这个类下的一个函数名
也可以自己写一个函数,我们可以返回true和false,来确认是否命中
如:
filter:function(filepath){
return (!grunt.file.isDir(fildpath));//取反来判断是否是文件
}
dot:true 则命中以点开头的文件 如:.index.html
matchBase:true a?b xyz/123/acb 不会命中 xyz/acb/123
expand:true 处理动态的src到dest的文件映射
dist:{
files:[
expand:true,
cwd:'app/'
src:"*.html",
dest:'dest',
ext:'.min.html', //后缀名
extDot:'first', 从第几个点开始配置 如 index.max.html 则是index.min.html 如果是last 则是index.max.min.html
flatten:true, 不要目录 如:js/index.js 只会有 dist/index.js
rename: function(dest,src){
return dest+"js/"+src; //找回js目录
} //他会在ext extDot flatten 后运行
]
}
grunt serve --allow-remote //局域网内可访问
connect:dist:keepalive //keepalive 是参数 值是true
取值用 this.flags 是一个json {keepalive:true}
取值方式先用 this.flags 然后用 options 最后用默认
exclude:['src'] //指定排除路径
浏览器厂商前缀
mocha 测试
phantamjs 幻影浏览器 幽灵 没有界面
useminPrepare
rev :md5 值 重命名
+
usemin