经过前面的学习,将测试的Gruntfile整合在一起!

/**
* Created by Administrator on 2017/6/22.
*/
module.exports = function(grunt){
"use strict";
grunt.initConfig({
pkg: grunt.file.readJSON("package.json"), //将存储在package.json文件中的grunt 版本信息和各个插件的数据信息引入到grunt config中
copy: { //copy任务,把所有文件拷贝到功能代码目录下,即EngineeringCode目录
module_target: { //copy任务目标,任务名是固定的“任务名称”属性,目标名可以随意定,不重复就行
files: [{ //files特性,表示执行任务目标时,会自动新建固定名称的文件夹,比如scripts,style等
expand: true,
cwd: "SourceCode/", //所有src指定的匹配都将相对于此处指定的路径(即该路径是基础路径,但不包括此路径)
src: ['**/*'],
dest: "EngineeringCode/", //dest 生成的目标文件路径前缀,即重新生成的这些文件后放到什么位置。
filter: "isFile",
extDot: 'first'
}]
}
}, concat: { //将指定目录下的js文件拼接成一个js文件,CSS文件拼接成一个CSS文件
options: {
separator: ';',
stripBanners: true,
banner: '/*! hello - v1.2.3 - 2014-2-4 */'
},
dist: { //concat任务目标1,将EngineeringCode/VarMesSignMan下的所有js文件拼接成一个.min.js文件
//files:[{
// expand: true,
// cwd: "EngineeringCode/",
// src: ['**/*.js'],
// dest: "EngineeringCode/zipFile/all.js",
// //ext: ".min.js",
// //extDot: 'first'
//}]
src: "EngineeringCode/**/*.js", //将EngineeringCode目录下包括子文件夹下的所有css文件
dest: "EngineeringCode/zipFile/scripts/all.js" //合并到dest路径下名为all.js的文件
},
dist2: { //concat任务目标2,将EngineeringCode/VarMesSignMan下的所有css文件拼接成一个.min.css文件
src: "EngineeringCode/**/*.css", //EngineeringCode目录下包括子文件夹下的所有css文件
dest: "EngineeringCode/zipFile/style/all.css" //合并到dest路径下名为all.css 的文件
}
}, cssmin: { //cssmin任务,将指定目录下的css文件压缩成 .min.css文件
options: {
separator: ';',
stripBanners: true,
banner: '/*! hello - v1.2.3 - 2014-2-4 */'
},
my_target:{ //cssmin任务目标1,将EngineeringCode/VarMesSignMan下的所有css文件压缩成.min.css文件
files: [{
expand: true,
cwd: 'EngineeringCode/VarMesSignMan/style', //所有src指定的匹配都将相对于此处指定的路径(即该路径是基础路径,但不包括此路径)
src: '**/*.css',
dest: 'EngineeringCode/VarMesSignMan/style', //dest 生成的目标文件路径前缀,即重新生成的这些文件后放到什么位置。
ext: ".min.css", //ext 对于生成的dest路径中所有实际存在文件,均使用这个属性值替换扩展名。
extDot: 'first' //extDot 用于指定标记扩展名的英文点号的所在位置。可以赋值 'first' (扩展名从文件名中的第一个英文点号开始) 或 'last' (扩展名从最后一个英文点号开始),默认值为 'first'
}]
},
my_target2:{ //cssmin任务目标2,将EngineeringCode/BiInterface下的所有css文件压缩成.min.css文件
files: [{
expand: true,
cwd: 'EngineeringCode/BiInterface/style',
src: '**/*.css',
dest: 'EngineeringCode/BiInterface/style',
ext: ".min.css",
extDot: 'first'
}]
}
}, uglify: { //uglify任务,将指定目录下的js文件压缩成 .min.js文件
options: {
separator: ';',
stripBanners: true,
banner: '/*! hello - v1.2.3 - 2014-2-4 */'
},
my_target:{ //uglify任务目标1,将EngineeringCode/VarMesSignMan下的所有js文件压缩成.min.js文件
files: [{
expand: true,
cwd: 'EngineeringCode/VarMesSignMan/scripts',
src: '**/*.js',
dest: 'EngineeringCode/VarMesSignMan/scripts',
ext: ".min.js",
extDot: 'first'
}]
},
my_target2:{ //uglify任务目标2,将EngineeringCode/BiInterface下的所有js文件压缩成.min.js文件
files: [{
expand: true,
cwd: 'EngineeringCode/BiInterface/scripts',
src: '**/*.js',
dest: 'EngineeringCode/BiInterface/scripts',
ext: ".min.js",
extDot: 'first'
}]
}
},
clean: { //clean任务,将指定目录下的指定格式文件删除
js: { //clean任务目标1,将EngineeringCode目录下的所有非 .min.js文件删除
src: ['EngineeringCode/**/*.js','!EngineeringCode/**/*min.js','!EngineeringCode/**/*all.js']
},
css: { //clean任务目标2,将EngineeringCode目录下的所有非 .min.css文件删除
src: ['EngineeringCode/**/*.css','!EngineeringCode/**/*min.css','!EngineeringCode/**/*all.css']
}
}
}); grunt.loadNpmTasks("grunt-contrib-copy"); //加载能够提供"copy"任务的插件。加载其他插件和此方法相同
grunt.loadNpmTasks("grunt-contrib-concat");
grunt.loadNpmTasks("grunt-contrib-cssmin");
grunt.loadNpmTasks("grunt-contrib-uglify"); //加载能够提供"uglify"任务的插件。加载其他插件和此方法相同
grunt.loadNpmTasks("grunt-contrib-watch");
grunt.loadNpmTasks("grunt-contrib-clean"); grunt.registerTask("default",["copy:module_target","concat","cssmin","uglify","clean"]); //通过定义 default 任务,可以让Grunt默认执行一个或多个任务。
};

  最后,取个巧,如果不想在命令行执行grunt命令,可以利用bat批处理文件自动执行grunt任务。

  编写一个bat文件来执行grunt任务。测试项目位于E盘FrontEndCompression目录下,bat文件具体如下。保存后,双击运行该bat就能够自动压缩构建模块了。

@echo off
title 【文件压缩处理】
color 03f
echo minify javascript and css with grunt E:
cd E:\\Work_Test\\FrontEndCompression\\SourceCode
grunt echo Press any key to continue....
pause

  根目录文件夹下所有文件

  

  未执行 grunt 时,EngineeringCode现为空文件夹

  

  在执行 grunt 后,完成了将SourceCode文件夹内的文件拷贝到EngineeringCode文件夹内的一系列操作!

  

Grunt入门学习之(3) -- Gruntfile具体示例的更多相关文章

  1. Grunt入门学习之(2) -- Gruntfile的编写

    Gruntfile由以下几部分构成: "wrapper" 函数 项目与任务,目标配置 加载grunt插件和任务 自定义任务 1.wrapper函数(包装函数) 每一个 Gruntf ...

  2. Grunt入门学习之(1) -- 环境安装

    Grunt入门学习(1) - 环境安装 这周根据项目需要,在项目的基础上分模块开发了一个小的项目板块,但是在规范组织每个模块的代码和其依赖性时比较麻烦,需要一个项目板块的构建工具.各个模块都包括其对应 ...

  3. grunt 入门学习

    前端工作流,Grunt上手指南 Posted@2013-04-20 7:15 a.m. CategoriesGrunt ,  javascript 我想先花点时间回忆一下作为一个前端需要做的工作(Lo ...

  4. cocos2d-x入门学习笔记,主要介绍cocos2d-x的基本结构,并且介绍引擎自带的示例

    cocos2d-x 3.0 制作横版格斗游戏 http://philon.cn/post/cocos2d-x-3.0-zhi-zuo-heng-ban-ge-dou-you-xi http://blo ...

  5. 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)

    [原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...

  6. 自动化构建工具grunt的学习

    关于grunt的一些记录,记的比较乱... 0.删除node_modules文件夹 命令行: npm install rimraf -g //先运行 rimraf node_modules //然后运 ...

  7. Retrofit 入门学习

    Retrofit 入门学习官方RetrofitAPI 官方的一个例子 public interface GitHubService { @GET("users/{user}/repos&qu ...

  8. opengl入门学习

    OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...

  9. Scala入门学习笔记三--数组使用

    前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...

随机推荐

  1. [BJOI2014]大融合(LCT)

    题面 luogu bzoj是权限题.. 题解 \(LCT\)维护子树信息 因为\(LCT\)中有一些虚子树,\(splay\)维护不了. 所以要新开一个数组来记录 然后注意\(link\)时 是先\( ...

  2. Focal Loss 的前向与后向公式推导

    把Focal Loss的前向和后向进行数学化描述.本文的公式可能数学公式比较多.本文尽量采用分解的方式一步一步的推倒.达到能易懂的目的. Focal Loss 前向计算 其中 是输入的数据 是输入的标 ...

  3. PS2模拟器 PCSX2 新手向

    1.模拟器的下载 1.1百度网盘地址:http://pan.baidu.com/s/1i3kt7bJ (已经整合了PS2BIOS的模拟器下载,比较新的版本,适合新手) 1.2高端玩家可以下载: 官网g ...

  4. 1、 小白带你入坑xamarin系列之环境搭建和准备

    重点提示 由于xamarin发展更新很快 目前教程部分内容已经过时 请注意下载最新版本   2018.05.23 www.xamarin.com 1. 小白带你入坑xamarin系列之环境搭建和准备 ...

  5. 【chrome】设置chrome允许WebGL从本地载入资源

    找到chrome安装路径,然后创建一个快捷方式,右击该快捷方式,在 目标 输入框中加上-allow-file-access-from-files(前面加个空格),通过该快捷方式打开chrome就可以通 ...

  6. SPSS学习系列之SPSS Statistics导入读取数据(多种格式)(图文详解)

    不多说,直接上干货! SPSS Statistics导入读取数据的步骤: 文件  ->  导入数据 成功! 欢迎大家,加入我的微信公众号:大数据躺过的坑     免费给分享       同时,大 ...

  7. HaspMap的新奇用法

    HashMap<String, String> map = new HashMap<String,String>(){ private static final long se ...

  8. 13 Timer和TimerTask 示例

    定时器是一个应用十分广泛的线程工具,可用于调度多个定时任务以后台线程的方式执行.在Java中,可以通过Timer和TimerTask类来实现定义调度的功能 1 Timerjava.lang.Objec ...

  9. 每天一道leetcode234-回文链表

    考试结束,班级平均分只拿到了年级第二,班主任于是问道:大家都知道世界第一高峰珠穆朗玛峰,有人知道世界第二高峰是什么吗?正当班主任要继续发话,只听到角落默默想起来一个声音:”乔戈里峰” 前言 2018. ...

  10. RestTemplate的一个请求过程,mark一下

    来看下RestTemplate中默认的的ResponseErrorHandler: package org.springframework.web.client; import java.io.IOE ...