使用GruntJS链接与压缩多个JavaScript文件过程详解


Posted in Javascript onAugust 02, 2013

自己写了个简单的HTML5 Canvas的图表库,可以支持饼图,折线图,散点图,盒子图 柱状图,同时支持鼠标提示,绘制过程动画效果等。最终我想把这些多个JS文件变成 一个JS文件发布出去,于是我的问题来啦,怎么把这些JS文件搞成一个啊,群里有个 朋友告诉我,GruntJS ? JavaScript多文件编译,风格检查,链接与压缩神器。Google了一 把终于帮我完成这个任务,算是入门,分享一下过程。

一什么是GruntJS
不想翻译英文,自己看它的网站吧->http://gruntjs.com/
二:安装与运行
它的官方教程说的不是很清楚,有点让第一次看的人云里雾里的。我总结一下,GruntJS
是基于与依赖服务器node.js的。所以首先第一步是下载并安装node.js,下载地址:
http://nodejs.org/download/

第二步:运行安装grunt命令行工具? 目的是为了使用grunt命令
只有在windows的命令行窗口中运行:npm install -g grunt-cli即可。更具体的解释参见这里:http://gruntjs.com/getting-started

第三步:在项目的根目录创建project.json与Gruntfile.js两个文件
因为grunt的task运行要依赖于这两个文件。
其中创建project.json文件方法可以通过命令行实现:nmp init我创建project.json
内容如下:

{ 
"name": "fishchart", 
"version": "0.0.1", 
"description": "html5 canvas chart library", 
"author": "zhigang", 
"license": "BSD", 
"devDependencies": { 
"grunt": "~0.4.1", 
"grunt-contrib-uglify": "~0.2.2", 
"grunt-contrib-jshint": "~0.6.2", 
"grunt-contrib-concat": "~0.3.0" 
} 
}

使用命令创建时候,如果你不知道写什么直接回车跳过即可。

三: 安装与使用Grunt Plug-in完成javascript文件链接与压缩
1. 安装javascript文件链接插件支持
npm install grunt-contrib-concat --save-dev
2. 安装javascript文件压缩插件支持
npm install grunt-contrib-uglify --save-dev
3. 在Gruntfile.js文件中配置选项,加载与定义task

module.exports = function(grunt) { 
grunt.initConfig({ 
//our JSHint options 
jshint: { 
all: ['main.js'] //files to lint 
}, 
//our concat options 
concat: { 
options: { 
separator: ';' //separates scripts 
}, 
dist: { 
src: ['js/*.js', 'js/**/*.js'], //Grunt mini match for your scripts to concatenate 
dest: 'js/fishchart_v0.0.1.js' //where to output the script 
} 
}, 
//our uglify options 
uglify: { 
js: { 
files: { 
'js/fishchart_v0.0.1.js': ['js/fishchart_v0.0.1.js'] //save over the newly created script 
} 
} 
} 
}); 
//load our tasks 
grunt.loadNpmTasks('grunt-contrib-jshint'); 
grunt.loadNpmTasks('grunt-contrib-concat'); 
grunt.loadNpmTasks('grunt-contrib-uglify'); 
// default tasks to run 
// grunt.registerTask('default', ['jshint', 'concat', 'uglify']); 
grunt.registerTask('development', ['jshint']); 
grunt.registerTask('production', ['jshint', 'concat', 'uglify']); 
}

四:运行结果
使用GruntJS链接与压缩多个JavaScript文件过程详解 
最后还想赞一下,这个东西太好用啦!
Javascript 相关文章推荐
给网站上的广告“加速”显示的方法
Apr 08 Javascript
Javascript加载速度慢的解决方案
Mar 11 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
Jun 12 Javascript
js中判断变量类型函数typeof的用法总结
Aug 09 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
Oct 15 Javascript
jQuery操作json常用方法示例
Jan 04 Javascript
jQuery中的一些小技巧
Jan 18 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
Jul 18 Javascript
JavaScript代码实现txt文件的上传预览功能
Mar 27 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
May 15 Javascript
vue实现文件上传读取及下载功能
Nov 17 Javascript
html5中sharedWorker实现多页面通信的示例代码
May 07 Javascript
把jquery 的dialog和ztree结合实现步骤
Aug 02 #Javascript
jquery的相对父元素和相对文档定位示例代码
Aug 02 #Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
Aug 02 #Javascript
JS 获取select(多选下拉)中所选值的示例代码
Aug 02 #Javascript
jQuery在html有效在jsp无效的原因及解决方法
Aug 02 #Javascript
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
Aug 02 #Javascript
JS日期和时间选择控件升级版(自写)
Aug 02 #Javascript
You might like
用PHP实现多级树型菜单
2006/10/09 PHP
php 结果集的分页实现代码
2009/03/10 PHP
php addslashes和mysql_real_escape_string
2010/01/24 PHP
PHP 学习路线与时间表
2010/02/21 PHP
php expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
细谈php中SQL注入攻击与XSS攻击
2012/06/10 PHP
Function eregi is deprecated (解决方法)
2013/06/21 PHP
php使用websocket示例详解
2014/03/12 PHP
php 使用redis锁限制并发访问类示例
2016/11/02 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
如何将网页表格内容导入excel
2014/02/18 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
2018/06/15 Javascript
微信小程序实现顶部导航特效
2019/01/28 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
Node.js Domain 模块实例详解
2020/03/18 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
python同时给两个收件人发送邮件的方法
2015/04/30 Python
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
Python访问纯真IP数据库脚本分享
2015/06/29 Python
Python数据集切分实例
2018/12/08 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
关于python中导入文件到list的问题
2020/10/31 Python
Ralph Lauren意大利官方网站:时尚界最负盛名的品牌之一
2018/10/18 全球购物
应聘收银员个人的求职信
2013/11/30 职场文书
经典婚礼主持词
2014/03/13 职场文书
医学求职信
2014/05/28 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
党员公开承诺书(2016最新版)
2016/03/24 职场文书
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL