使用Grunt.js管理你项目的应用说明


Posted in Javascript onApril 24, 2013

Grunt.js是什么?
Grunt.js是一个Javascript Task Runner(Javascript任务运行器),其基于NodeJS,可用于自动化构建、测试、生成文档的项目管理工具。

Grunt.js并不是仅仅是构建工具,实际上他只是任务运行器,管理每个子任务的自动化运行,我们还能使用他做更多东西。
 

为什么使用Grunt.js?
简单的说:为了自动化。
对于前端项目,例如:

•为了明确模块分工,我们可能会将Javascript代码拆成很小很小的一个个js文件,但是我们知道,在最终页面上,我们知道过多的js文件会产生过多的Http Request,这不利于页面优化。所以我们可能希望可以合并这些js文件的工具。
•为了用户端请求的文件尽量小,我们希望我们的HTML、Javascript等文件能进行压缩。
•我们可能需要对源代码进行一些单元测试和回归测试。
•我们可能希望有工具能够通过源代码备注自动生成文档,免得手动再写文档。
•……
很明显,这一切都有各种各样的小工具能帮我们做到,但是我们希望最好能输入一个命令,打开一个程序,或者干脆每次修改文件保存后自动进行这一切事情。

以前我们可能使用NodeJS自己写一个build程序,但是现在Grunt.js能够提供我们需要的一切。

安装Grunt.js
Grunt.js 0.4之后,其不再使用全局方式安装整个Grunt.js,而是在全局安装Grunt.js Client,然后在当前项目中安装Grunt,来避免未来不同项目对Grunt不同版本的依赖关系。

如果安装了之前的版本,可以使用npm的命令来删除掉原来的Grunt.js。

npm uninstall -g grunt
然后安装Grunt.js Client:

npm install -g grunt-cli
 

package.json
package.json是项目的配置文件,有一些项目的依赖信息,以及作者、版本等信息。我们先写一个简单的package.json。

{
  "name": "my-project",
  "version": "0.1.0",
  "devDependencies": {
    "grunt": "~0.4.1"
  }
}

name属性,表示该项的名字。

version属性,则是该项目的版本号。

devDependencies属性,则包含该项目的依赖,目前我们的依赖只有grunt,以及版本为0.4.1。
在终端大概包含该package.json的目录,输入命令:

npm install
我们会发现,该目录此时多了一个node_modules文件夹,里面有个grunt文件夹,这个就是我们安装在项目的Grunt.js。

用Grunt.js进行压缩js代码
grunt-contrib-uglify是Grunt.js的一个任务模块,其基于著名的js压缩工具uglify,进行js压缩任务。

首先我们在项目依赖加上grunt-contrib-uglify,package.json如下:

{
  "name": "my-project",
  "version": "0.1.0",
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-contrib-uglify": "~0.2.0"
  }
}

再使用:

npm install
我们就安装了grunt-contrib-uglify了。

写Gruntfile.js

module.exports = function(grunt) {
    // 给grunt添加些设置
    grunt.initConfig({
        uglify: {
            options: {
                banner: '/*! 版权所有,这里乱写 */\n'
            },
            build: {
                src: 'src/core.js', //要压缩的源文件,我们也可以用*表示通配,比如'src/*.js'
                dest: 'dst/core.js' //压缩后输出的位置
            }
        }
    });
    // 载入 "uglify" 插件任务
    grunt.loadNpmTasks('grunt-contrib-uglify');
    // 定义默认需要执行的任务
    grunt.registerTask('default', ['uglify']);
};

Gruntfile.js文件用于定义任务,以及任务组的执行顺序等。上面的文件我们定义将src/core.js文件压缩后输出成dst/core.js。则我们输入命令:

grunt
的时候,则会自动完成这个任务。

Javascript 相关文章推荐
执行iframe中的javascript方法
Oct 07 Javascript
为jQuery.Treeview添加右键菜单的实现代码
Oct 22 Javascript
javascript 闭包
Sep 15 Javascript
js调用css属性写法
Sep 21 Javascript
基于Jquery实现键盘按键监听
May 11 Javascript
node.js中的console.dir方法使用说明
Dec 10 Javascript
推荐10 款 SVG 动画的 JavaScript 库
Mar 24 Javascript
在JavaScript的正则表达式中使用exec()方法
Jun 16 Javascript
jQuery网页版打砖块小游戏源码分享
Aug 20 Javascript
node.js实现爬虫教程
Aug 25 Javascript
实现JavaScript高性能的数据存储
Dec 11 Javascript
微信小程序实现顶部下拉菜单栏
Nov 04 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
Apr 24 #Javascript
jQuery文本框(input textare)事件绑定方法教程
Apr 24 #Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
Apr 24 #Javascript
Dom 学习总结以及实例的使用介绍
Apr 24 #Javascript
jQuery 关于伪类选择符的使用说明
Apr 24 #Javascript
关于ExtJS4.1:快捷键支持的问题
Apr 24 #Javascript
Jquery实现三层遍历删除功能代码
Apr 23 #Javascript
You might like
一个简单实现多条件查询的例子
2006/10/09 PHP
php中将网址转换为超链接的函数
2011/09/02 PHP
PHP的可变变量名的使用方法分享
2012/02/05 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
PHP程序员必须知道的两种日志实例分析
2020/05/14 PHP
PHP7新增函数
2021/03/09 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
javascript 全等号运算符使用说明
2010/05/31 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
Python爬虫实现获取动态gif格式搞笑图片的方法示例
2018/12/24 Python
python循环输出三角形图案的例子
2019/11/22 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
2020/07/14 Python
Python中bisect的用法及示例详解
2020/07/20 Python
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
金鑫耀Java笔试题
2014/09/06 面试题
高级护理专业大学生求职信
2013/10/24 职场文书
新闻记者个人求职的自我评价
2013/11/28 职场文书
2014庆六一活动方案
2014/03/02 职场文书
感恩母亲节活动方案
2014/03/04 职场文书
入职担保书范文
2014/05/21 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
作风建设剖析材料
2014/10/06 职场文书
鸟的天堂导游词
2015/01/31 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL
python 实现图片特效处理
2022/04/03 Python
python实现双向链表原理
2022/05/25 Python