使用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 Tab 导航插件 (23个)
Jun 11 Javascript
js或css实现滚动广告的几种方案
Jan 28 Javascript
面向对象的Javascript之二(接口实现介绍)
Jan 27 Javascript
捕获键盘事件(且兼容各浏览器)
Jul 03 Javascript
jquery datatable后台封装数据示例代码
Aug 07 Javascript
jQuery中[attribute]选择器用法实例
Dec 31 Javascript
javascript数组排序汇总
Jul 07 Javascript
基于jQuery实现响应式圆形图片轮播特效
Nov 25 Javascript
JS实现图片居中悬浮效果
Dec 25 Javascript
为什么要使用Vuex的介绍
Jan 19 Javascript
vue elementUI使用tabs与导航栏联动
Jun 21 Javascript
JS实现使用POST方式发送请求
Aug 30 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操作文件的一些基本函数使用示例
2014/11/18 PHP
PHP分页类集锦
2014/11/18 PHP
实现php删除链表中重复的结点
2018/09/27 PHP
php微信公众号开发之快递查询
2018/10/20 PHP
php json转换相关知识(小结)
2018/12/21 PHP
YII框架常用技巧总结
2019/04/27 PHP
php数组和链表的区别总结
2019/09/20 PHP
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
jQuery插件开发全解析
2012/10/10 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
解析vue中的$mount
2017/12/21 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
JS实现放烟花效果
2020/03/10 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
python正则表达式修复网站文章字体不统一的解决方法
2013/02/21 Python
深入Python解释器理解Python中的字节码
2015/04/01 Python
详解Django中Request对象的相关用法
2015/07/17 Python
win与linux系统中python requests 安装
2016/12/04 Python
python实现串口自动触发工作的示例
2019/07/02 Python
python应用文件读取与登录注册功能
2019/09/23 Python
浅谈pycharm导入pandas包遇到的问题及解决
2020/06/01 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
股东授权委托书范本
2014/09/13 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
2014年医院工作总结
2014/11/20 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
PHP遍历数组的6种方式总结
2021/11/17 PHP
nginx lua 操作 mysql
2022/05/15 Servers
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python