使用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 相关文章推荐
JS事件在IE与FF中的区别详细解析
Nov 20 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
Jun 10 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
Jun 09 Javascript
JS制作手机端自适应缩放显示
Jun 11 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
Apr 06 Javascript
JavaScript几种数组去掉重复值的方法推荐
Apr 12 Javascript
无缝滚动的简单实现代码(推荐)
Jun 07 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
Jan 08 Javascript
webstorm添加vue.js支持的方法教程
Jul 05 Javascript
vue-cli 组件的导入与使用教程详解
Apr 11 Javascript
讲解vue-router之什么是动态路由
May 28 Javascript
vue实现登录功能
Dec 31 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
虫族 Zerg 热键控制
2020/03/14 星际争霸
php访问查询mysql数据的三种方法
2006/10/09 PHP
PHP学习资料汇总与网址
2007/03/16 PHP
用php实现批量查询清除一句话后门的代码
2008/01/20 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
2009/08/04 Javascript
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
JS增加行复制行删除行的实现代码
2013/11/09 Javascript
JavaScript简单实现鼠标拖动选择功能
2014/03/06 Javascript
Javascript实现飞动广告效果的方法
2015/05/25 Javascript
学习JavaScript设计模式(封装)
2015/11/26 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
2017/09/30 Javascript
微信小程序实现图片放大预览功能
2020/10/22 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
Python 元类实例解析
2018/04/04 Python
基于python神经卷积网络的人脸识别
2018/05/24 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
详解重置Django migration的常见方式
2019/02/15 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
Python __slots__的使用方法
2020/11/15 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
班组长岗位职责
2014/03/03 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL