使用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 相关文章推荐
理解Javascript_03_javascript全局观
Oct 11 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
Nov 08 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
Mar 11 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
Jun 25 Javascript
使用JavaScript实现旋转的彩圈特效
Jun 23 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
Jun 30 Javascript
js实现3D图片展示效果
Mar 09 Javascript
jQuery 表单序列化实例代码
Jun 11 jQuery
vue+element创建动态的form表单及动态生成表格的行和列
May 20 Javascript
vue中使用GraphQL的实例代码
Nov 04 Javascript
vue的$http的get请求要加上params操作
Nov 12 Javascript
vue实现树状表格效果
Dec 29 Vue.js
把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
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
2016/10/08 PHP
php提交表单时保留多个空格及换行的文本样式的方法
2017/06/20 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
Angularjs 基础入门
2014/12/26 Javascript
JavaScript实现将xml转换成html table表格的方法
2015/04/17 Javascript
javascript使用输出语句实现网页特效代码
2015/08/06 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
Nodejs进阶:基于express+multer的文件上传实例
2016/11/21 NodeJs
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
移动端吸顶fixbar的解决方案详解
2019/07/17 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
Python类的继承用法示例
2019/01/31 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
2019/11/11 Python
python 通过exifread读取照片信息
2020/12/24 Python
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
2013/04/25 HTML / CSS
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
Omio葡萄牙:全欧洲低价大巴、火车和航班搜索和比价
2019/02/09 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
法律专业推荐信范文
2013/11/29 职场文书
个人简历自我评价
2014/01/06 职场文书
2014年会演讲稿范文
2014/01/06 职场文书
语文教研活动总结
2014/07/02 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
呼兰河传读书笔记
2015/06/30 职场文书