Grunt入门学习之(3) -- Gruntfile具体示例
经过前面的学习,将测试的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具体示例的更多相关文章
- Grunt入门学习之(2) -- Gruntfile的编写
Gruntfile由以下几部分构成: "wrapper" 函数 项目与任务,目标配置 加载grunt插件和任务 自定义任务 1.wrapper函数(包装函数) 每一个 Gruntf ...
- Grunt入门学习之(1) -- 环境安装
Grunt入门学习(1) - 环境安装 这周根据项目需要,在项目的基础上分模块开发了一个小的项目板块,但是在规范组织每个模块的代码和其依赖性时比较麻烦,需要一个项目板块的构建工具.各个模块都包括其对应 ...
- grunt 入门学习
前端工作流,Grunt上手指南 Posted@2013-04-20 7:15 a.m. CategoriesGrunt , javascript 我想先花点时间回忆一下作为一个前端需要做的工作(Lo ...
- 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 ...
- 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)
[原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...
- 自动化构建工具grunt的学习
关于grunt的一些记录,记的比较乱... 0.删除node_modules文件夹 命令行: npm install rimraf -g //先运行 rimraf node_modules //然后运 ...
- Retrofit 入门学习
Retrofit 入门学习官方RetrofitAPI 官方的一个例子 public interface GitHubService { @GET("users/{user}/repos&qu ...
- opengl入门学习
OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...
- Scala入门学习笔记三--数组使用
前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...
随机推荐
- 为什么要重写hashcode方法和equals方法
我们可能经常听到说重写equals方法必须重写hashcode方法,这是为什么呢?java中所有的类都是Object的子类,直接上object源码 /* * Copyright (c) 1994, 2 ...
- JAVA数据结构--Array数组实现
所谓数组,是有序的元素序列. [1] 若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用于区分数组的各个元素的数字编 ...
- [JZOJ6075]【GDOI2019模拟2019.3.20】桥【DP】【线段树】
Description N,M<=100000,S,T<=1e9 Solution 首先可以感受一下,我们把街道看成一行,那么只有给出的2n个点的纵坐标是有用的,于是我们可以将坐标离散化至 ...
- 5 个 iOS 和 Android 最佳的开源自动化工具[转]
自动化测试时下在产品测试上有着非常重要的作用.实现测试自动化有多种积极的方式,包括最大限度地减少测试执行时间:在关键的发布阶段,用更少的时间确保更大的覆盖范围:在产品开发阶段,可靠又重复性地运行以确保 ...
- 什么是WCF(转)
什么是WCF(Windows Communication Foundation(WCF)) 大家可以百度一下了解什么是WCF.当然有些人看到密密麻麻的黑框白字就懒的读.即使读了 可能也没明白确切的含义 ...
- hibernate关联关系的crud2
hibernate关联关系的CRUD操作,解释都在注释里了,讲了fetchType.cascade. User类: package com.oracle.hibernate; import javax ...
- JWT的介绍解析
JWT的介绍解析 一.什么是JWT?了解JWT,认知JWT 首先jwt其实是三个英语单词JSON Web Token的缩写.通过全名你可能就有一个基本的认知了.token一般都是用来认证的,比如我们系 ...
- SSM上传EXCLE到数据库 和 从数据库导出为EXCLE
SSM上传EXCLE到数据库 和 从数据库导出为EXCLE package com.ABC.controller; import java.io.BufferedInputStream; import ...
- ECharts概念学习系列之ECharts官网教程之在 webpack 中使用 ECharts(图文详解)
不多说,直接上干货! 官网 http://echarts.baidu.com/tutorial.html#%E5%9C%A8%20webpack%20%E4%B8%AD%E4%BD%BF%E7%94% ...
- JVM虚拟机指令
参考及转载: (1)https://blog.csdn.net/qq_33301113/article/details/73717855 (2)https://blog.csdn.net/wangxf ...