Grunt 依赖 Node.js 所以在安装之前确保你安装了 Node.js。然后开始安装 Grunt

实际上,安装的并不是 Grunt,而是 Grunt-cli,也就是命令行的 Grunt,这样你就可以使用 grunt 命令来执行某个项目中的 Gruntfile.js 中定义的 task 。但是要注意,Grunt-cli 只是一个命令行工具,用来执行,而不是 Grunt 这个工具本身

  • 1.安装node

    node.js安装教程

  • 2.grunt命令行(CLI) 安装在全局环境下,所以命令是这么写滴!

    npm install -g grunt-cli

  • 3.新建一个项目,名字叫grunt_test:注意,千万不要叫grunt,后面运行grunt命令的时候会出错

    下面是我的项目目录

    QQ截图20161222155458.png
  • 4.生成package.json,也可以手动生成这样一个文件

    npm init

生成之后在里面填入以下内容

package.json.png
  • 5.安装grunt

    npm install grunt --save-dev 注意查看package.json文件

grunt安装成功.png

偶?自动把grunt的版本号加上啦。对啦,这就是--save-dev的作用

  • 6.安装grunt插件

js语法检查:grunt-contrib-jshint
安装命令:npm install grunt-contrib-jshint --save-dev 下同
css语法检查:grunt-contrib-csslint
合并文件:grunt-contrib-concat
js压缩文件:grunt-contrib-uglify
css压缩文件:grunt-contrib-cssmin
image压缩文件:grunt-contrib-imagemin
html压缩文件:grunt-contrib-htmlmin
Sass\Scss 编译:grunt-contrib-sass
安装sass插件后,我运行grunt,发现报错,提示ruby没有安装,所以如果需要使用到这个插件的,要确保自己的电脑上是否有装ruby,没有的话要进行安装
sudo yum install ruby # CentOS, Fedora, 或 RHEL 系统
sudo apt-get install ruby-full # Debian 或 Ubuntu 系统
brew install ruby #苹果系统
Less 编译:grunt-contrib-less
监听文件变动:grunt-contrib-watch
建立本地服务器:grunt-contrib-connect

上面这些插件都安装好后,注意看package.json文件中的内容

grunt插件安装成功.png
  • 7.配置Gruntfile.js

这里是对每个需要的插件进行配置

grunt.initConfig.png

插件太多了,挑其中一个(uglify,用于js压缩)进行详细说明

grunt-contrib-uglify.png

grunt是任务机制,我在这里给定了combine、compress、fileCompress三个任务,执行grunt时会按顺序执行三个任务
>

uglify:{
options:{
sourceMap: false,
stripBanners: true,
//压缩后的文件注释信息
banner :'/*! <%=pkg.name%>-<%=pkg.version%>.js <%= grunt.template.today("yyyy-mm-dd") %> */\n',
footer:'\n/*!修改于<%= grunt.template.today("yyyy-mm-dd") %> */'
},
combine: {
files: {
'build/static/js/compress-<%= pkg.name %>-<%= pkg.version %>.min.js': ['dev/static/js/*.common.js'],
'build/static/js/compress.common.min.js': ['dev/static/js/*/*.common.js']
}
},
compress:{
options:{
report:"min",
},
files:[{
expand:true,
cwd:'dev/static/js',
src:['*.js','!*.min.js','!*.common.js'],
dest:'build/static/js',
ext:'.min.js'
}]
},
fileCompress:{
options:{
},
files:[{
expand:true,
cwd:'dev/static/js',
src:['**/*.js','!**/*.min.js','!**/*.common.js'],
dest:'build/static/js/',
ext:'.min.js'
}]
}
},

uglify:combine 用来合并文件
uglify:compress用来压缩文件
uglify:fileCompress也是用来压缩文件
下面两个的区别在于 files中的src:*/.js用来匹配所有的js,注意,输出的时候会保留目录层次,如果是合并到一个文件中,就把dest写成

dest: 'build/static/js/common.js',并且不写ext就可以

grunt配置总体图

grunt配置一览图.png

最后一行代码是注册任务,当然,除了default,我们也可以注册到别的Task上去,比如grunt.registerTask('compress', ['uglify:build']);
如果想要执行这个 task,我们就不能只输入 grunt 命令了,我们需要输入 grunt compress命令来执行这条 task,而这条 task 的任务是 uglify 下面的 build 任务,也就是说,我们只会执行 uglify 里面 build 定义的任务,而不会执行 uglify 里面定义的其他任务。
这里需要注意的是,task 的命名不能与后面的任务配置同名,也就是说这里的 compress 不能命名成 uglify,这样会报错或者产生意外情况

  • 8.运行查看效果

    在grunt_test目录下,运行grunt,我现在是默认执行uncss和htmlmin

Grunt-学习。的更多相关文章

  1. Grunt学习使用

    原文地址:Grunt学习使用必看 grunt简介神马的不多说,到处一大堆. 我只说说我已经实现了的代码. 按照官方的教程 相信已经配置好了,接下来说 package.json 和 Gruntfile. ...

  2. Grunt 学习笔记【2】---- 配置和创建任务

    本文主要讲Grunt任务配置. 说明:本文所有示例都基于Grunt 0.4.5版本. 一 说明 使用Grunt实现项目的打包等工程化工作,实际上是通过Grunt提供的机制和插件,配置一个个任务(例如: ...

  3. grunt学习

    有些时候,项目中的静态资源,比如图片占用的文件有点大,影响加载的速度,所以会选择grunt对其进行压缩打包.对于grunt其他的用法,还在继续学习中,先记录下关于grunt的一些学习. grunt是一 ...

  4. 我的grunt学习笔记

    什么是grunt?  Grunt是一个JavaScript任务运行器,用于自动执行频繁任务(如压缩,编译,单元测试)的工具.它使用命令行界面来运行在文件中定义的自定义任务(这个文件称为Gruntfil ...

  5. Grunt学习日记

    Grunt和 Grunt 插件是通过npm安装并管理的, npm是Node.js的包管理器. 第一步:先安装node.js环境 第二步:安装Grunt-CLI 在node.js命令工具中输入npm i ...

  6. grunt学习笔记

    1. 在使用grunt前需要执行的几条命令和用途 npm uninstall -g grunt  删除掉全局grunt npm install -g grunt-cli 把grunt加入你的系统搜索路 ...

  7. grunt学习随笔

    1 grunt 安装  全局安装 npm install -g grunt-cli 2 配置好package.json 和 Gruntfile 文件,这两个文件必须位于项目根目录下. 2.1packa ...

  8. grunt学习笔记1 理论知识

    你需要检查js语法错误,然后再去压缩js代码.如果这两步你都去手动操作,会耗费很多成本.Grunt就能让你省去这些手动操作的成本. “—save-dev”的意思是,在当前目录安装grunt的同时,顺便 ...

  9. grunt学习三-bower(一)

    bower是什么?官网给出的  a package manager fow the web.简单说引入文件版本管理,例如jquery,传统做法到jquery的官网下载下,在引入,这样比较繁琐,也不利用 ...

  10. grunt学习二

    1. 新建文件和文件目录 mkdir grunt-in-action cd grunt-in-action cd grunt-in-action mkdir grunt-empty cd grunt- ...

随机推荐

  1. rabbitmq实现一台服务器同时给指定部分的consumer发送消息(tp框架)(第六篇)

    previous article:  http://www.cnblogs.com/spicy/p/7989717.html 上一篇学习了,发送消息的时候用direct类型的exchange,绑定不同 ...

  2. 开源视频会议bigbluebutton

    这是另一个开源视频会议项目,简称bbb 官方网站:http://bigbluebutton.org/ 代码地址:https://code.google.com/p/bigbluebutton/ dem ...

  3. 关于Spring配置的一些东西

    Spring 配置的三种方式:JAVA配置,注解配置,和XML的配置 注解配置: @Service:标识服务层(业务层)组件 @Component:基本注解, 标识了一个受 Spring 管理的组件( ...

  4. 如何使用Android Studio提高App质量

    Android Studio作为现在谷歌主推的Android开发功能,除了提供了大量的功能帮助快速开发Android代码之外,在代码质量控制方面也提供了很多工具,这些工具都放在Analyze菜单下, ...

  5. Python -- Gui编程 -- MFC的使用

    1.消息框 mfcDialog.py import win32ui import win32con from pywin.mfc import dialog class MyDialog(dialog ...

  6. 共识算法:PBFT、RAFT

    转自:https://www.cnblogs.com/davidwang456/articles/9001331.html 区块链技术中,共识算法是其中核心的一个组成部分.首先我们来思考一个问题:什么 ...

  7. 用java实现一个简易编译器-语法解析

    语法和解析树: 举个例子看看,语法解析的过程.句子:“我看到刘德华唱歌”.在计算机里,怎么用程序解析它呢.从语法上看,句子的组成是由主语,动词,和谓语从句组成,主语是“我”,动词是“看见”, 谓语从句 ...

  8. rails render

    Render結果 在根據request資訊做好資料處理之後,我們接下來就要回傳結果給用戶.事實上,就算你什麼都不處理,Action方法裡面空空如也,甚至不定義Action,Rails預設也還是會執行r ...

  9. 淺談 Entity 的概念

    延續上一篇文章<Drupal Commerce 概念架構>,本來打算要繼續講 Commerce 與 Views 整合的主題.不過由於這個主題牽涉到 Views 中的 Relationshi ...

  10. ADO调用分页查询存储过程

    一.分页存储过程 ----------使用存储过程编写一个分页查询----------------------- set nocount off --关闭SqlServer消息 --set nocou ...