使用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 相关文章推荐
JQuery 入门实例1
Jun 25 Javascript
斜45度寻路实现函数
Aug 20 Javascript
jquery nth-child()选择器的简单应用
Jul 10 Javascript
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
Apr 01 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
May 25 Javascript
JQuery显示、隐藏div的几种方法简明总结
Apr 16 Javascript
wap手机端解决返回上一页的js实例
Dec 08 Javascript
Bootstrap 树控件使用经验分享(图文解说)
Nov 06 Javascript
快速处理vue渲染前的显示问题
Mar 05 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
Oct 08 Javascript
详解element-ui中form验证杂记
Mar 04 Javascript
layui 中select下拉change事件失效的解决方法
Sep 20 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
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
php 3行代码的分页算法(求起始页和结束页)
2009/10/21 PHP
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
javascript 写类方式之八
2009/07/05 Javascript
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
记一次用ts+vuecli4重构项目的实现
2020/05/21 Javascript
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
Python 基础之字符串string详解及实例
2017/04/01 Python
Python实现购物程序思路及代码
2017/07/24 Python
利用python GDAL库读写geotiff格式的遥感影像方法
2018/11/29 Python
django query模块
2019/04/20 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
生物化工专业个人自荐信
2013/09/26 职场文书
群众路线剖析材料
2014/02/02 职场文书
《学会合作》教学反思
2014/04/12 职场文书
2014业务员年终工作总结
2014/12/09 职场文书
阿凡达观后感
2015/06/10 职场文书
SQL注入详解及防范方法
2021/12/06 MySQL