使用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从头学起(基本数据类型和引用类型的参数传递详细分析)
Feb 16 Javascript
javascript中数组的sort()方法的使用介绍
Dec 18 Javascript
js光标定位文本框回车表单提交问题的解决方法
May 11 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
Oct 04 Javascript
JSON 数据详解及实例代码分析
Jan 20 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
May 22 Javascript
angularjs实现时间轴效果的示例代码
Nov 29 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
Jan 02 jQuery
vue 自定义 select内置组件
Apr 10 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
Feb 18 jQuery
微信小程序淘宝首页双排图片布局排版代码(推荐)
Oct 29 Javascript
解决vue init webpack 下载依赖卡住不动的问题
Nov 09 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语法(5)
2006/10/09 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
2011/10/27 PHP
开源php中文分词系统SCWS安装和使用实例
2014/04/11 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
JS模块与命名空间的介绍
2013/03/22 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
几句话带你理解JS中的this、闭包、原型链
2016/09/26 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
vue中实现Monaco Editor自定义提示功能
2019/07/05 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
[40:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs TNC
2018/04/01 DOTA
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
python实现的系统实用log类实例
2015/06/30 Python
深入解析Python中的线程同步方法
2016/06/14 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
2020/11/12 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
澳大利亚运动鞋零售商:The Athlete’s Foot
2018/11/04 全球购物
会计电算化专业毕业生推荐信
2013/12/24 职场文书
保证书格式范文
2014/04/28 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
解读Vue组件注册方式
2021/05/15 Vue.js