一.grunt是基于nodejs的,所以首先我们需要安装node

二.全局安装grunt 可以参考 http://www.gruntjs.net/docs/getting-started/

进行安装.

1.全局安装

npm install -g grunt-cli

2.进入当前项目根据配置文件

package.json

进行本地安装,或者直接把以前项目所有用过的本地安装文件直接复制到当前项目使用

3.任务设置

打开gruntfile.js进行设置

  1. module.exports = function (grunt) {
  2. // 任务配置,所有插件的配置信息
  3. grunt.initConfig({
  4. pkg: grunt.file.readJSON('package.json'),
  5.  
  6. //1.先清空发布文件夹
  7. clean: {
  8. src: ["publish/"]
  9. },
  10. //2.复制到发布文件夹 不要破坏源文件
  11. copy: {
  12. main: {
  13. files: [
  14. { src: 'assets/**', dest: 'publish/' },
  15. // { src: 'assets/*.html', dest: 'publish/assets/' },
  16. ]
  17. }
  18. },
  19. //3.进行合并
  20. concat: {
  21. js:{
  22. dest: 'publish/tmp/concat/js/app.js',
  23. src: ['publish/assets/js/*.js']
  24. },
  25. css:{
  26. dest: 'publish/tmp/concat/css/app.css',
  27. src: ['publish/assets/css/*.css']
  28. }
  29.  
  30. },
  31. //4.进行压缩
  32. uglify: {
  33. main: {
  34. files: [
  35. {
  36.  
  37. //dest: 'publish/js/app.min.js',
  38. //src: 'publish/tmp/concat/js/app.js'
  39. expand: true,
  40. cwd: "assets/js",
  41. ext: ".min.js",
  42. src: '**/*.js',
  43. dest: 'publish/js'
  44.  
  45. }
  46. ]
  47. }
  48. },
  49. cssmin: {
  50. main:{
  51. files: [
  52. {
  53. //dest: 'publish/css/app.min.css',
  54. //src: 'publish/tmp/concat/css/app.css'
  55. expand: true,
  56. cwd: "assets/css",
  57. ext: ".min.css",
  58. src: '**/*.css',
  59. dest: 'publish/css'
  60. }
  61. ]
  62. }
  63. },
  64. //4.进行hash运算重命名文件
  65. rev: {
  66. options: {
  67. algorithm: 'md5',
  68. length: 8
  69. },
  70. files: {
  71. src: ['publish/assets/js/*.js', 'publish/assets/css/*.css'],
  72. }
  73. },
  74. //5.替换静态资源链接
  75. useminPrepare: {
  76. src: "publish/assets/*.html"
  77. },
  78. usemin: {
  79. html: 'publish/assets/*.html',
  80. }
  81. });
  82.  
  83. // 告诉grunt我们将使用插件
  84. grunt.loadNpmTasks('grunt-contrib-clean');
  85. grunt.loadNpmTasks('grunt-contrib-copy');
  86. grunt.loadNpmTasks('grunt-contrib-concat');
  87. grunt.loadNpmTasks('grunt-contrib-uglify');
  88. grunt.loadNpmTasks('grunt-contrib-cssmin');
  89. grunt.loadNpmTasks('grunt-rev');
  90. grunt.loadNpmTasks('grunt-usemin');
  91.  
  92. // 告诉grunt当我们在终端中输入grunt时需要做些什么
  93. grunt.registerTask('default', ['clean', 'copy', 'uglify', 'concat', 'cssmin', 'rev', 'usemin']);
  94.  
  95. };

 

参考链接

http://www.hulufei.com/post/grunt-introduction

grunt构建前端自动化的更多相关文章

  1. grunt构建前端自动化的开发环境

    废话不多说.直奔主题. 1.安装node. 别问为什么.如果你不知道,说了你还是不知道. 别问怎么安装,自己去百度. 2.安装grunt_CLI. 安装完node,并且安装成功了,后.下载grunt_ ...

  2. Gulp构建前端自动化工作流之:常用插件介绍及使用

    在对Gulp有了一个初步的了解之后,我们开始构建一个较为完整的Gulp开发环境. 本文主要分为6个段落: 1. 构建项目目录结构(Directory Structure Build) 2. 插件介绍及 ...

  3. 使用grunt构建前端项目

    1. grunt构建工具是基于nodejs上的,所以在使用之前一定要先安装好nodejs 2. 安装好nodejs后,node -v查看node版本 npm-v 查看npm版本信息 3. 在需要用到的 ...

  4. grunt搭建前端自动化实践

    grunt是什么? grunt是一个前端构建工具, 每种应用开发, 都有一套构建工具, 例如linux c程序开发, 构建工具是make, java程序的构建工具为maven,web前端经过十多年的发 ...

  5. 使用Gulp构建前端自动化方案

    前言 在刚入门前端的时候,我们并不清楚前端有工具可以帮我们自动化打包压缩文件,当时只关注能实现功能就可以了,也不太在意前端性能优化的问题,随着项目功能的复杂,项目也变得越来越大,页面的执行速度也开始变 ...

  6. Gulp构建前端自动化项目

    类似于Grunt,gulp是另一个同样功能很强大的前端项目自动化利器. 下面是项目的效果:

  7. Grunt usemin前端自动化打包流程

    前端优化是尽量减少http请求,所以我们需要尽量合并压缩文件,然后调用压缩后的文件,比如多个css文件压缩成一个,多个js文件合并压缩等,usemin能够自动在html中使用压缩后的文件,达到上面的目 ...

  8. Grunt打造前端自动化工作流

    HTML去掉注析.换行符 - HtmlMin CSS文件压缩合并 – CssMinify JS代码风格检查 – JsHint JS代码压缩 – Uglyfy image压缩 - imagemin ht ...

  9. 浅谈构建前端自动化工作流程一 之 node

    一.Node环境 1.什么是Node? Node.js类似于jquery.js,不是js文件,也不是一个js框架,而是Server side JavaScript runTime,服务端的一个JS运行 ...

随机推荐

  1. 获取RenderedGeometry不对的处理

    如果是在代码中添加的形状,获取Shape.RenderedGeometry会出错. 这是由于WPF没有更新形状的原因,调用Shape.Arrange()后问题解决.

  2. 4.1 avd

    6.接着我们回到文件夹界面,运行 AVD Manager.exe. 7.打开 AVD Manager.exe后,点击“New"创建新的模拟器: 8.创建一个新的 Android Virtua ...

  3. 【POJ】3261 Milk Patterns

    http://poj.org/problem?id=3261 题意:一个长度为n的串,要求最长的子串的长度且这个子串的出现次数不少于k次.(1<=n<=20000, 2<=k< ...

  4. 【BZOJ】1048: [HAOI2007]分割矩阵

    http://www.lydsy.com/JudgeOnline/problem.php?id=1048 题意:给出一个a×b(a,b<=10)的矩阵,带一个<=100的权值,现在要切割n ...

  5. POJ 2112 Optimal Milking(最大流+二分)

    题目链接 测试dinic模版,不知道这个模版到底对不对,那个题用这份dinic就是过不了.加上优化就WA,不加优化TLE. #include <cstdio> #include <s ...

  6. 使 SortList 实现重复键排序

    SortList 默认对按Key来排序,且Key值不能重复,但有时可能需要用有重复值的Key来排序,以下是实现方式: 1.对强类型:以float为例 #region 使SortList能对重复键排序 ...

  7. CentOS 下安装python 之MySQLdb

    yum -y install mysql-devwget http://downloads.sourceforge.net/project/mysql-python/mysql-python-test ...

  8. spring redis整合

    1,利用spring-data-redis整合 项目使用的pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" ...

  9. Scrum会议2(Beta版本)

    组名:奋斗吧兄弟 组长:王森 组员:张政.张金生.林莉.胡丽娜 代码地址:HTTPS:https://git.coding.net/jx8zjs/llk.git SSH:git@git.coding. ...

  10. json解析json字符串时候,数组必须对应jsonObjectArray,不能对应JsonObject。否则会解析错误。

    json第三方解析json字符串时候,json数组必须对应jsonObjectArray,不能对应JsonObject.->只要是[]开头的都是json数组字符串,就要用jsonArray解析 ...