Gruntfile.js
module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), clean: { Task_001: //任务一 { expand:true, src:['build/**'] } }, uglify: //js代码压缩 { options: { mangle: false, //不混淆变量名 //stripBanners:'all', //banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n', //添加header //footer:'\n/*! <%= pkg.name %> 最后修改于: <%= grunt.template.today("yyyy-mm-dd") %> */'//添加footer }, Task_001: //任务一 { files: [ { expand:true, //如果设为true,就表示下面文件名的占位符(即*号)都要扩展成具体的文件名。 cwd:"src/js", //src目录下 src:"**/*.js", //所有的文件夹中的js文件 dest:"build/js" //放在build文件夹中的js文件夹中 }, { expand:true, //如果设为true,就表示下面文件名的占位符(即*号)都要扩展成具体的文件名。 cwd:"src/js", //src目录下 src:"*.js", //所有的js文件 dest:"build/js" //放在build文件夹中的js文件夹中 } ] }, Task_002: { files: [ { expand:true, //如果设为true,就表示下面文件名的占位符(即*号)都要扩展成具体的文件名。 cwd:"src/js", //src目录下 src:"My_Js/*.js", //所有的文件夹中的js文件 dest:"build/js" //放在build文件夹中的js文件夹中 }, ] } }, cssmin: { options: { report:'gzip' }, Task_001: //任务一 { files: [ { expand:true, //如果设为true,就表示下面文件名的占位符(即*号)都要扩展成具体的文件名。 cwd:'src/css', //css目录下 src:"**/*.css", //所有的文件夹中的css文件 dest:"build/css" //放在build文件夹中的css文件夹中 }, { expand:true, //如果设为true,就表示下面文件名的占位符(即*号)都要扩展成具体的文件名。 cwd:'src/css', //css目录下 src:"*.css", //所有的css文件 dest:"build/css" //放在build文件夹中的css文件夹中 } ] }, Task_002: //任务二 { files: [ { expand:true, //如果设为true,就表示下面文件名的占位符(即*号)都要扩展成具体的文件名。 cwd:'src/css', //css目录下 src:"My_css/*.css", //所有的文件夹中的css文件 dest:"build/css" //放在build文件夹中的css文件夹中 } ] }, }, imagemin: { Task_001: //任务一 { options: { optimizationLevel: //定义 PNG 图片优化水平 }, files: [ { expand:true,//如果设为true,就表示下面文件名的占位符(即*号)都要扩展成具体的文件名。 cwd:'src/Images',//images目录下 src:'*.{png,jpg,jpeg,gif}',//所有的img文件 dest:'build/Images'//Images }, { expand:true,//如果设为true,就表示下面文件名的占位符(即*号)都要扩展成具体的文件名。 cwd:'src/Images',//images目录下 src:'**/*.{png,jpg,jpeg,gif}',//所有的img文件 dest:'build/Images'//Images } ] } }, htmlmin: { //https://www.npmjs.com/package/html-minifier options: { removeComments: true, //删除html注释 removeCommentsFromCDATA: true, //删除带HTML注释脚本和样式 removeCDATASectionsFromCDATA:true, //从脚本删除CDATA节和风格元素 collapseWhitespace:true, //崩溃的空白,导致文本节点在文档树。 conservativeCollapse:true, //总是省略空间必须使用与collapseWhitespace = true collapseInlineTagWhitespace:true, //之间不要留下任何空间显示:内联元素时崩溃。必须使用与collapseWhitespace = true preserveLineBreaks:false, //(false既开启超级压缩)总是省略换行之间的空白标签包含一个换行符。必须使用与collapseWhitespace = true collapseBooleanAttributes:true, //省略属性值从布尔属性 removeTagWhitespace:true, //尽可能消除之间的空间属性。 removeAttributeQuotes:true, //删除引号属性。 removeRedundantAttributes:true, //删除属性值匹配时违约。 preventAttributesEscaping:true, //防止逃跑的属性的值。 useShortDoctype:true, //替换的doctype短(HTML5)doctype removeEmptyAttributes:true, //删除所有空格作属性值 removeScriptTypeAttributes:true, //删除type = " text / javascript脚本标签。其他类型属性值剩下完好无损。 removeStyleLinkTypeAttributes:true, //删除类型= " text / css "从风格和链接标记。其他类型属性值剩下完好无损 removeOptionalTags:true, //删除没有要求标签 //removeEmptyElements:true, //删除所有元素空内容 keepClosingSlash:true, //保持尾部的斜杠单元素 caseSensitive:true, //以区分大小写的方式处理属性(用于自定义HTML标记。) minifyJS:true, //压缩Javascript脚本元素和事件属性(使用UglifyJS) minifyCSS:true, //压缩CSS样式元素和风格属性(使用clean-css) minifyURLs:true, //压缩url在不同属性(使用relateurl) includeAutoGeneratedTags:true, //插入标记生成的HTML解析器 quoteCharacter:true //类型的引用使用属性值(“或”) }, Task_001: //任务一 { files: [ { expand:true, //如果设为true,就表示下面文件名的占位符(即*号)都要扩展成具体的文件名。 cwd:"src", //app目录下 src:"**/*.html", //所有的文件夹中的html文件 dest:"build"//放在build文件夹中的html文件夹中 }, { expand:true, //如果设为true,就表示下面文件名的占位符(即*号)都要扩展成具体的文件名。 cwd:"src", //html目录下 src:"*.html", //所有的html文件 dest:"build"//放在build文件夹中的html文件夹中 } ] } }, copy: //将编译好的文件,复制到我的项目中 { Task_001: //任务一 { files: [ { expand:true, cwd:'build', src:'**', dest:'www' } ] } }, watch: //自动监听文件的保存并执行指定的任务 { Task_001: //任务一 { files:['src/js/*.js','src/css/*.css','src/*.html'], tasks:['uglify:Task_002','cssmin:Task_002','htmlmin'], options:{ spawn:false} } } }); //#####告诉grunt我们将使用的插件 grunt.loadNpmTasks('grunt-contrib-clean'); //js压缩 grunt.loadNpmTasks('grunt-contrib-uglify'); //js压缩 grunt.loadNpmTasks('grunt-contrib-cssmin'); //css压缩 grunt.loadNpmTasks('grunt-contrib-imagemin'); //image压缩 grunt.loadNpmTasks('grunt-contrib-htmlmin'); //html压缩 grunt.loadNpmTasks('grunt-contrib-copy'); //Copy文件和目录 grunt.loadNpmTasks('grunt-contrib-watch'); //监视文件 //#####告诉grunt我们在终端输入grunt时需要做一些什么 grunt.registerTask('default',['clean','uglify','cssmin','imagemin','htmlmin','copy','watch']); };
Gruntfile.js的更多相关文章
- grunt使用watch和livereload的Gruntfile.js的配置
周末在家看angularJS, 用grunt的livereload的自动刷新, 搞了大半天, 现在把配置贴出来, 免得以后忘记了, 只要按照配置一步步弄是没有问题的; 开始的准备的环境安装是: (1) ...
- Grunt 自动化部署之css、image、javascript、html压缩Gruntfile.js配置
grunt.initConfig方法 用于模块配置,它接受一个对象作为参数.该对象的成员与使用的同名模块一一对应. 每个目标的具体设置,需要参考该模板的文档.就cssmin来讲,minify目标的参数 ...
- ☀【Grunt】package.json, Gruntfile.js, npm install, grunt
npm install --registry http://registry.npm.taobao.org/ 切换源 Grunt.js 在前端项目中的实战http://beiyuu.com/grunt ...
- 使用grunt-init自动创建gruntfile.js和package.json文件
使用grunt-init可以自动创建gruntfile.js和package.json文件.下面说一下过程: 1.全局安装grunt-init npm install -g grunt-init 2. ...
- Gruntfile.js模板
module.exports = function(grunt) { // 配置项 var AppConfig = { name: 'app', //源文件目录 src: 'app/src', //生 ...
- Gruntfile.js文件配置项
GRUNT安装与配置 Posted on 2016-08-19 18:13 听风吹来的种子 阅读(47) 评论(0) 编辑 收藏 安装 CLI npm install -g grunt-cli//全局 ...
- 编写可维护的 Gruntfile.js
load-grunt-tasks 插件 首先介绍下 load-grunt-tasks 这个插件. 我们一般都会把所有用到的插件以及插件的配置写到 Gruntfile.js 里面,对于小项目来说这个文件 ...
- Grunt:GruntFile.js
ylbtech-Grunt:GruntFile.js 1.返回顶部 1. module.exports = function (grunt) { grunt.initConfig({ useminPr ...
- 一路编程 -- Gruntfile.js
<一路编程> Steven Foote 第四章构建工具 中的 Gruntfile.js 文件的 JSHint 部分,如果按照书中所写,run grunt 的命令的时候会出错. 此处附上完 ...
- Javascript模块化开发2——Gruntfile.js详解
一.grunt模块简介 grunt插件,是一种npm环境下的自动化工具.对于需要反复重复的任务,例如压缩.编译.单元测试.linting等,自动化工具可以减轻你的劳动,简化你的工作.grunt模块根据 ...
随机推荐
- python装饰器--@property
@property 考察 Student 类: class Student(object): def __init__(self, name, score): self.name = name sel ...
- jQuery事件和JavaScript事件
1.JavaScript事件: 属性 当以下情况发生时,出现此事件 FF N IE onabort 图像加载被中断 1 3 4 onblur 元素失去焦点 1 2 3 onchange 用户改变域的内 ...
- Eclipse 的 Debug 介绍与技巧【转载】
没有任何程序员能够一气呵成的写出没有任何 Bug 的代码,所以很多程序员有相当一部分时间是花费在 Debug 上的,程序调试是每个程序员必须面对的工作.如何使用 Eclipse 进行有效的.尤其是高效 ...
- 分享Kali Linux 2016.2第46周虚拟机
分享Kali Linux 2016.2第46周虚拟机该虚拟机使用Kali Linux 2016.2第46周的64位镜像安装.桌面为Gnome模式.该虚拟机配置如下:(1)支持VMWare 9以上的版本 ...
- C#与mysql做ASP.NET网页数据库查询速度测试
两种方法是:1,使用mysql数据库的存储过程:2,C#编码,做网页后台与mysql数据库连接,前台测试显示测试过结果下面我将分别讲解两种方法的具体实现. 1,使用mysql数据库的存储过程插入万条大 ...
- ajax轮循
使用 AJAX 进行异步加载轮询操作.简单代码如下: <script> // 执行ajax轮循操作 function polling(){ var xmlhttp; // 判断浏览器--创 ...
- Python基础2- Hello,world
第一个程序Hello,world! 交互式编程:在终端窗口中输入:python回车后直接进入python交互模式,然后在提示符>>>后面输入:print 'Hello,world!' ...
- Codeforces 633C Spy Syndrome 2(DP + Trie树)
题目大概说给一个加密的字符串,加密规则是把原文转化成小写字母,然后各个单词反转,最后去掉空格.现在给几个已知的单词,还原加密的字符串. 和UVa1401一个道理.. 用dp[i]表示加密字符前i个字符 ...
- Shell 编程基础之 If 练习
一.语法 if [ condition ]; then # 当 condition 成立时,执行内容: fi # 将 if 反过来写,fi 结束 if 之意 if [ condition ]; the ...
- c# 修饰词public, protected, private,internal,protected的区别
public: 对任何类和成员都公开, 无限制访问;protected: 仅仅对该类以及该类的派生类公开;private: 仅仅对该类公开;internal: 只能值包含该类的程序集中访问该类(只是 ...