首页 > 代码库 > Grunt
Grunt
什么是Grunt
Grunt是基于NodeJs的一个任务管理器,简单的来讲就是JavaScript帮助你完成诸如CSS/JavaScript的代码风格检查、合并、压缩,图片压缩处理,LESS、SASS的编译等等。它可以帮助你自动化构建、测试代码、生成文档,当然它还可以做的更多。 Grunt生态系统非常庞大,并且一直在增长。由于拥有数量庞大的插件可供选择,因此,你可以利用Grunt自动完成任何事,并且花费最少的代价。如果你找不到你想要的插件,你可以自己编写一个并发布出来供大家使用。 Grunt官网:http://gruntjs.com Grunt插件地址:http://gruntjs.com/plugins Grunt中文网:http://www.gruntjs.net/
环境搭建、安装及配置
NodeJs环境搭建
因为Grunt是基于NodeJs的,所以首先需要搭建NodeJs的环境,现在NodeJs的官网(http://nodejs.org/)已经有了windows版本的安装包非常方便,下载对应的版本进行安装,以windows7操作系统为例。
1.下载node-v0.10.26-x64.msi (我的系统是64位的)
2.直接安装
3.修改npmrc文件,因为天朝的限制(你们懂的)在线安装NPM模块的速度之比蜗牛快那么一点,我们不得不把NPM的registry地址修改下:
进入你的NodeJs安装目录,找到 ~\nodejs\node_modules\npm\npmrc 文件并打开,在文件的最下面加入一行代码:
registry = http://registry.cnpmjs.org
就像下面这样:
完成上述步骤后可以运行cmd,输入node -v 和 npm -v 查看NodeJs和NPM的版本,同样这代表了你已经完成了NodeJs的运行环境搭建。
grunt-cli安装
需要通过NPM来全局安装grunt-cli,输入npm install -g grunt-cli 进行安装:
(因为我们之前重新指定了registry的地址,所以下载安装速度飞快啊。)
实际案例操作
package.json 和 Gruntfile.js
要想使用grunt,package.json和Gruntfile.js两个文件是必须的,两个文件必须放在同一级同时最好放在项目的根目录中。
package.json
package.json,包含了项目的一些基本信息和grunt所需要的插件列表信息,可以复制以下代码用来创建一个package.json文件。
*name 填写你的项目名称
*version 填写项目的版本号
*evDependencies 所依赖的插件列表
通过npm install命令就可以自动安装devDependencies中罗列的插件了
同时项目文件夹中会生成一个node_modules文件夹,里面就是下载安装好的各个依赖的插件了。
Gruntfile.js
Grunt的所有任务都是通过Gruntfile.js来配置的,你需要:
通过grunt.initConfig() 来配置任务
通过grunt.loadNpmTasks() 来声明加载插件
通过grunt.registerTask() 定义任务组合
下面的代码配置了JavaScript压缩、CSS压缩、拷贝文件、监听文件四个任务,通过grunt.registerTasks()将它们组合成了两个任务分别是default默认任务,wh监听文件任务。
点击下载:Gruntfile.js
在终端中输入命令grunt来运行default任务,输入grunt wh来运行watch任务。
配置grunt-contrib-watch
grunt-contrib-watch是一款可以实时监听项目文件添加、修改、删除时自动运行预先设置或刷新页面任务的Grunt插件,可以通过npm install grunt-contrib-watch --save-dev,来安装watch插件,安装好以后package.json会自动将其加入列表中。
github地址:https://github.com/gruntjs/grunt-contrib-watch
配置watch及livereload任务
上面的代码配置了监听CSS/JS文件夹下的文件(但不包括压缩文件),当文件内容更改时,自动执行压缩任务,并通过livereload任务刷新页面。
想要页面自动刷新需要客户端和livereload进行通信了,官方文档列出了四种通信方式:
1.在页面上使用livereload.js
2.在浏览器上使用Live Reload插件
3.使用connect-livereload中间件
4.使用库tiny-lr,来实现
最方便的还是第一种,在前面加上,在终端输入grunt wh就开始监听文件了,只要文件被修改过,就会自动触发配置的任务。
总结
1.Gruntfile.js 的语言是js,贴近前端,学习成本低。
2.Grunt的配置和使用是非常简单的,每个人可以根据自己的习惯去安装插件配置任务,搭建自己的自动化工作流。
3.Grunt能做的事情不止这些,还有很多其它的功能等待我们去挖掘
Grunt