`

Grunt 自动化部署之css、image、javascript、html压缩Gruntfile.js配置

 
阅读更多

转载:http://www.cnblogs.com/hubcarl/p/4095122.html

grunt.initConfig方法

用于模块配置,它接受一个对象作为参数。该对象的成员与使用的同名模块一一对应。

每个目标的具体设置,需要参考该模板的文档。就cssmin来讲,minify目标的参数具体含义如下:

  • expand:如果设为true,就表示下面文件名的占位符(即*号)都要扩展成具体的文件名。
  • cwd:需要处理的文件(input)所在的目录。
  • src:表示需要处理的文件。如果采用数组形式,数组的每一项就是一个文件名,可以使用通配符。
  • dest:表示处理后的文件名或所在目录。
  • ext:表示处理后的文件后缀名。

 

grunt常用函数说明:

grunt.initConfig:定义各种模块的参数,每一个成员项对应一个同名模块。
grunt.loadNpmTasks:加载完成任务所需的模块。
grunt.registerTask:定义具体的任务。第一个参数为任务名,第二个参数是一个数组, 表示该任务需要依次使用的模块。

 

grunt常用模块:

  • grunt-contrib-clean:删除文件。
  • grunt-contrib-compass:使用compass编译sass文件。
  • grunt-contrib-concat:合并文件。
  • grunt-contrib-copy:复制文件。
  • grunt-contrib-cssmin:压缩以及合并CSS文件。
  • grunt-contrib-imagemin:图像压缩模块。
  • grunt-contrib-jshint:检查JavaScript语法。
  • grunt-contrib-uglify:压缩以及合并JavaScript文件。
  • grunt-contrib-watch:监视文件变动,做出相应动作。

 

package.json 包依赖关系:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
{
  "name""grunt-study",
  "version""1.0.0",
  "description""study",
  "main""index.js",
  "scripts": {
    "test""test"
  },
  "repository": {
    "type""git",
    "url""https://github.com/hubcarl"
  },
  "devDependencies":{
    "matchdep""latest",
    "shelljs""latest",
    "ngmshell""latest",
    "grunt""latest",
    "grunt-contrib-clean""latest",
    "grunt-contrib-concat""latest",
    "grunt-contrib-copy""latest",
    "grunt-contrib-connect""latest",
    "grunt-contrib-htmlmin""latest",
    "grunt-contrib-cssmin""latest",
    "grunt-contrib-imagemin""latest",
    "grunt-contrib-uglify""latest",
    "grunt-contrib-watch""latest",
    "grunt-usemin""latest",
    "connect-livereload""latest"
  },
  "keywords": [
    "grunt"
  ],
  "author""bluesky",
  "license""BSD-2-Clause",
  "bugs": {
    "url""https://github.com/hubcarl"
  }
}

  

Gruntfile.js配置css、image、javascript、html压缩

复制代码
  1 module.exports = function (grunt) {
  2 
  3   require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
  4 
  5   grunt.initConfig({
  6 
  7     //清除目录
  8     clean: {
  9       all: ['dist/html/**', 'dist/*.*'],
 10       image: 'dist/html/images',
 11       css: 'dist/html/css',
 12       html: 'dist/html/**/*'
 13     },
 14 
 15     copy: {
 16       src: {
 17         files: [
 18           {expand: true, cwd: 'src', src: ['*.html'], dest: 'dist/html'}
 19         ]
 20       },
 21       image: {
 22         files: [
 23           {expand: true, cwd: 'src', src: ['images/*.{png,jpg,jpeg,gif}'], dest: 'dist/html'}
 24         ]
 25       }
 26     },
 27 
 28     // 文件合并
 29     concat: {
 30       options: {
 31         separator: ';',
 32         stripBanners: true
 33       },
 34       js: {
 35         src: [
 36           "src/js/*.js"
 37         ],
 38         dest: "dist/html/js/app.js"
 39       },
 40       css:{
 41         src: [
 42           "src/css/*.css"
 43         ],
 44         dest: "dist/html/css/main.css"
 45       }
 46     },
 47 
 48     //压缩JS
 49     uglify: {
 50       prod: {
 51         options: {
 52           mangle: {
 53             except: ['require', 'exports', 'module', 'window']
 54           },
 55           compress: {
 56             global_defs: {
 57               PROD: true
 58             },
 59             dead_code: true,
 60             pure_funcs: [
 61               "console.log",
 62               "console.info"
 63             ]
 64           }
 65         },
 66 
 67         files: [{
 68             expand: true,
 69             cwd: 'dist/html',
 70             src: ['js/*.js', '!js/*.min.js'],
 71             dest: 'dist/html'
 72         }]
 73       }
 74     },
 75 
 76     //压缩CSS
 77     cssmin: {
 78       prod: {
 79         options: {
 80           report: 'gzip'
 81         },
 82         files: [
 83           {
 84             expand: true,
 85             cwd: 'dist/html',
 86             src: ['css/*.css'],
 87             dest: 'dist/html'
 88           }
 89         ]
 90       }
 91     },
 92 
 93     //压缩图片
 94     imagemin: {
 95       prod: {
 96         options: {
 97           optimizationLevel: 7,
 98           pngquant: true
 99         },
100         files: [
101           {expand: true, cwd: 'dist/html', src: ['images/*.{png,jpg,jpeg,gif,webp,svg}'], dest: 'dist/html'}
102         ]
103       }
104     },
105 
106     // 处理html中css、js 引入合并问题
107     usemin: {
108       html: 'dist/html/*.html'
109     },
110 
111     //压缩HTML
112     htmlmin: {
113       options: {
114         removeComments: true,
115         removeCommentsFromCDATA: true,
116         collapseWhitespace: true,
117         collapseBooleanAttributes: true,
118         removeAttributeQuotes: true,
119         removeRedundantAttributes: true,
120         useShortDoctype: true,
121         removeEmptyAttributes: true,
122         removeOptionalTags: true
123       },
124       html: {
125         files: [
126           {expand: true, cwd: 'dist/html', src: ['*.html'], dest: 'dist/html'}
127         ]
128       }
129     }
130 
131   });
132 
133 
134   grunt.registerTask('prod', [
135     'copy',                 //复制文件
136     'concat',               //合并文件
137     'imagemin',             //图片压缩
138     'cssmin',               //CSS压缩
139     'uglify',               //JS压缩
140     'usemin',               //HTML处理
141     'htmlmin'               //HTML压缩
142   ]);
143 
144   grunt.registerTask('publish', ['clean', 'prod']);
145 };
复制代码

index.html发布之前内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html>
<head>
    <title>Grunt 测试</title>
    <meta charset="utf-8">
    <!-- build:css css/main.css -->
    <link rel="stylesheet" href="css/common.css">
    <link rel="stylesheet" href="css/web.css">
    <!-- endbuild -->
 
    <!-- build:js js/main.js -->
    <script src="js/zepto.js"></script>
    <script src="js/common.js"></script>
    <script src="js/service.js"></script>
    <!-- endbuild -->
</head>
<body>
<p></p>
Hello,Grunt!
</body>
</html>
分享到:
评论

相关推荐

    Pro Grunt.js(Apress,2015)

    Pro Grunt.js gets you quickly up-to-speed with this popular JavaScript-based task runner. Author James Cryer takes you from initial installation all the way through to authoring successful plugins. ...

    gulp前端自动化配置文件

    1. **代码格式化压缩**:Gulp可以集成如ESLint、Prettier等工具,对JavaScript、CSS、HTML等代码进行格式化和压缩,确保代码规范且体积最小化,提高页面加载速度。 2. **图片压缩**:利用Gulp-image或者gulp-...

    jCarousel是一个jQuery插件用于控制水平或垂直顺序的项目清单

    - `Gruntfile.js`:Grunt任务配置文件,用于自动化构建过程,如编译、压缩等。 - `www.jq22.com.txt`:可能是网址文本文件,记录了jCarousel的演示地址。 - `jquery插件库.url`:快捷方式文件,指向jQuery插件库的...

    grunt-sprite:一个生成 css sprite 的 grunt 插件

    咕噜声图像精灵 将图像转换为 css sprite 图像 入门 这个插件需要 Grunt。 如果您以前没有使用过 ,请务必查看指南,... 如果你的操作系统是Ubuntu|Mac os ,当你运行npm install grunt-image-sprite ,脚本会自动安装

    grunt-svgtoinline:将单个 AI SVG 文件转换为 svg 符号格式。 然后,将它们添加到正文中,以便为您的 svg 图像系统内联引用它们

    通过Grunt,开发者可以编写任务配置文件,定义一系列自动化任务,如编译CSS、压缩JavaScript等,从而提升开发效率。 这个插件的主要功能是将Adobe Illustrator (AI) 创建的SVG文件转换成符合SVG符号(symbol)标准...

    js中flexible.js实现淘宝弹性布局方案

    Grunt可以用于执行任务,如合并、压缩CSS和JavaScript文件,而Bower则用于管理前端依赖库,如jQuery和fullpage.js,后者可能用于实现全屏滚动效果。 总结来说,`flexible.js`是实现淘宝弹性布局方案的关键,它简化...

    grunt-extract-svg-paths:Grunt插件,用于从svgs中提取路径数据

    Grunt 是一个自动化构建工具,它允许开发者通过编写配置文件来定义一系列的任务,如编译代码、压缩文件、执行测试等,从而提高开发效率。`grunt-extract-svg-paths` 就是这样一种任务,它专注于从SVG文件中提取 `...

    How to create a new package / theme (文档下载)

    4. **前端构建工具**:如Grunt或Gulp,用于自动化CSS和JavaScript的编译、压缩和合并。 创建Magento主题不仅需要对Magento架构有深入理解,还需要熟悉前端开发技术,如HTML、CSS、JavaScript和LESS/SASS。随着...

    webpack常见面试题总结.pdf

    Webpack 是一款强大的前端构建工具,它能够管理和打包项目中的各种资源,如JavaScript、CSS、图片等。相较于早期的构建工具Grunt和Gulp,Webpack 的核心理念是基于模块的依赖管理,它通过入口文件自动追踪并处理所有...

    酷炫的爆栈网源码.zip

     --phantomjs The task to generate the image.  --readme The task to update readme.  --updatestargazers The task to update the count of the stargazers.  为什么? 大家是否想过:...

    我的个人主页

    7. 构建工具:如Webpack、Gulp、Grunt,自动化处理资源文件,提高开发效率。 8. 框架和库:如React、Vue、Angular用于前端开发,jQuery简化JavaScript操作。 9. 后端技术:如Node.js、PHP、Python,处理服务器端逻辑...

    inline-svg-with-grunticon-fallback:如果你想开始在您的文档中

    3. 创建一个包含SVG图标文件的文件夹,并在Gruntfile.js中配置Grunticon任务。 4. 运行Grunt任务:`grunt grunticon`,生成的CSS和JavaScript文件会放置在指定的输出目录。 5. 在HTML文件中引入生成的CSS文件,并在...

    html2canvas

    JavaScript HTML renderer The script allows you to take "screenshots" of webpages or parts of it, directly on the users browser. The screenshot is based on the DOM and as such may not be 100% accurate...

    前端开源库-rework-plugin-url

    1. **项目部署**:在项目从本地环境部署到生产环境时,URL可能需要相应地调整,`rework-plugin-url` 能够自动化这一过程。 2. **资源优化**:通过将小图片转换为data URI,减少HTTP请求,提高页面加载速度。 3. **...

    eureka-build:利用最新的网络技术公司的基础构建项目。 grunt 控制 sass、javascript、图像精灵

    我的基础构建项目使用 NPM 和 Grunt、Sass、Compass、Image spriting JS 提示、CSS lint、JS Uglify、concat 和所有我喜欢使用的可爱工具。 入门! 确保您安装了最新版本的 Compass。 如果未安装,请访问网站更多...

    stylo2021-frontend

    7. **构建工具**:可能包含Grunt、Gulp或Webpack配置文件,这些工具用于自动化构建过程,包括代码编译、压缩、合并和优化。 8. **测试文件**:如果项目遵循良好的开发实践,可能会有测试文件(如*.spec.js)用于...

    image-minimizer-client

    6. 进程自动化:可能集成到构建流程中,如Webpack、Gulp或Grunt等,自动对项目中的所有图像进行优化,确保每次更新都得到最小化的图像。 7. CDNs(内容分发网络)集成:将优化后的图像托管在CDN上,利用全球分布的...

    nix-4

    5. **构建工具**:如`Grunt`、`Gulp`或`Webpack`,用于自动化任务,如编译、压缩和部署。 6. **测试文件**:如`.spec.js`,用于单元测试和功能测试。 7. **README或文档**:解释项目结构、安装和使用方法。 在开发...

    前端架构体系技术.docx

    前端架构体系技术 一、框架与组件 * Bootstrap 等 UI 框架设计与实现 + 伸缩布局:grid 网格...* 组件自动分析白名单配置 * 自定义插件编写 * Npm、jspm、bower 包管理工具 * R.js、Browserify、webpack 构建工具

    PRJ4_finalwebsite

    7. **构建脚本**:如果项目是通过Gulp、Grunt或Webpack等工具进行构建和优化的,那么会有一些配置文件(如gulpfile.js、webpack.config.js)和构建命令。 8. **JSON或其他配置文件**:可能包含环境配置、API密钥或...

Global site tag (gtag.js) - Google Analytics