Grunt 5分钟上手:合并+压缩前端代码
Grunt 的各种优点这里就不扯了,对于 新手来说 合并(concat) + 压缩(uglify) 前端代码的需求量应该是最大的,这里以这俩种功能为主做一个5分钟的入门吧!
工作环境
$ node -v
v0.10.35
$ npm -v
2.6.1
$ express -V
3.2.2
……
如果你没准备好那就上: 传送门 nodeJS 菜鸟入门 甚至上 google 百度一下 nodejs ……
搭建脚手架
1、项目 目录结构:
$ express gruntTest -e
……自动省略提示……
2、package.json 添加:
"devDependencies": {
"grunt": "~0.4.0",
"grunt-contrib-uglify": "~0.1.2",
"grunt-contrib-concat": "~0.1.1"
}
如果: "grunt-name":"*" 那么将安装该插件的最高版本,
3、安装依赖,保存 package.json 后执行
$ cd gruntTest && npm install
那么 npm 将开始自动安装依赖的插件,或者你也可以手动 install 添加各个插件,如:
npm install grunt-contrib-concat --save-dev
它将自动保存到 “devDependencies” 里面。
4、新建 Gruntfile.js (grunt 0.4.X 开始 grunt.js 重命名了)输入 :
module.exports = function(grunt) {
//init初始化
grunt.initConfig({
//读取 package
pkg : grunt.file.readJSON('package.json'),
//合并插件的 设置
concat : {
options : {
stripBanners: true,
// 正则匹配文件
banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy-mm-dd") %> */',
},
// 原始位置,输出位置
dist : {
src: ['public/javascripts/a.js', 'public/javascripts/b.js'],
dest: 'public/assets/built.js'
}
},
//压缩插件的设置
uglify : {
options : {
banner : '/*! <%= pkg.name %> '+
'<%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
build : {
src : 'public/assets/built.js',
dest : 'public/assets/built.min.js'
}
}
});
//载入执行依赖
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
//注册任务
grunt.registerTask('default', ['concat', 'uglify']);
};
到这里工作环境的脚手架基本ok, build 的路径根据实际项目来就行了,确认路径后就可以执行编译了。
执行 grunt
$ grunt
Running "concat:dist" (concat) task
File "public/assets/built.js" created.
Running "uglify:build" (uglify) task
File "public/assets/built.min.js" created.
Uncompressed size: 142 bytes.
Compressed size: 46 bytes gzipped (70 bytes minified).
Done, without errors.
放一下楼主的目录结构:

看下时间吧, 真的花了 5分钟吗~~~
源码
本次练习源码

你懂得!
完
Grunt 5分钟上手:合并+压缩前端代码的更多相关文章
- 使用grunt完成requirejs的合并压缩和js文件的版本控制
最近有一个项目使用了 requirejs 来解决前端的模块化,但是随着页面和模块的越来越多,我发现我快要hold不住这些可爱的js文件了,具体表现在每个页面都要设置一堆 requirejs 的配置( ...
- 简单使用grunt、bower工具合并压缩js和css
前段时间因为项目中的报表写了一个Jquery插件,开源到github上,参考以往大神们写的插件的姿势,决定搞了像模像样一点.言归正传.前端工程师对这些工具:Node,bower,grunt,npm这些 ...
- 【grunt第二弹】30分钟学会使用grunt打包前端代码(02)
前言 上一篇博客,我们简单的介绍了grunt的使用,一些基础点没能覆盖,我们今天有必要看看一些基础知识 [grunt第一弹]30分钟学会使用grunt打包前端代码 配置任务/grunt.initCon ...
- 【grunt整合版】30分钟学会使用grunt打包前端代码
grunt 是一套前端自动化工具,一个基于nodeJs的命令行工具,一般用于:① 压缩文件② 合并文件③ 简单语法检查 对于其他用法,我还不太清楚,我们这里简单介绍下grunt的压缩.合并文件,初学, ...
- 【grunt整合版】 30分钟学会使用grunt打包前端代码
grunt 是一套前端自动化工具,一个基于nodeJs的命令行工具,一般用于:① 压缩文件② 合并文件③ 简单语法检查 对于其他用法,我还不太清楚,我们这里简单介绍下grunt的压缩.合并文件,初学, ...
- 30分钟学会使用grunt打包前端代码【mark】
grunt 是一套前端自动化工具,一个基于nodeJs的命令行工具,一般用于:① 压缩文件② 合并文件③ 简单语法检查 对于其他用法,我还不太清楚,我们这里简单介绍下grunt的压缩.合并文件,初学, ...
- Web前端开发最佳实践(3):前端代码和资源的压缩与合并
一般在网站发布时,会压缩前端HTML.CSS.JavaScript代码及用到的资源文件(主要是图片文件),目的是加快文件在网络中的传输,让网页更快的展现.当然,CDN分发.缓存等方式也是加快代码或资源 ...
- 使用grunt打包前端代码
grunt 是一套前端自动化工具,一个基于nodeJs的命令行工具,一般用于:① 压缩文件② 合并文件③ 简单语法检查 对于其他用法,我还不太清楚,我们这里简单介绍下grunt的压缩.合并文件,初学, ...
- 【grunt整合版】学会使用grunt打包前端代码
grunt 是一套前端自动化工具,一个基于nodeJs的命令行工具,一般用于:① 压缩文件② 合并文件③ 简单语法检查 对于其他用法,我还不太清楚,我们这里简单介绍下grunt的压缩.合并文件,初学, ...
随机推荐
- C++编写简单的Service和Client
在上一步的基础上 编写Service节点 这里,我们将创建一个简单的service节点("add_two_ints_server"),该节点将接收到两个整形数字,并返回它们的和. ...
- sqoop执行job报错(org/json/JSONObject)
NoClassDefFoundError: org/json/JSONObject: [root@hadoop2 ~]# sqoop job --create myjob7 -- import -- ...
- 两个Integer比较大小需要注意的误区
通过下面的例子,来了解integer比较大小需注意的几点. eg.定义Integer对象a和b,比较两者结果为:a不等于b Integer a = 1; Integer b = 1; if(a==b) ...
- jQuery----选择器(重点是层次选择器)
基本选择器 1.id选择器 ---------------------------->根据id来获取,只有一个.---------------------------------------- ...
- Kotlin安卓页面本地存储数据(方法和封装)
直接上代码 封装: //存储key对应的数据 fun saveData(context: Activity, key: String, info: String) { val sharedPrefer ...
- 【转】 不需要任何权限获得Android设备的唯一ID
不需要任何权限获得Android设备的唯一ID,权限android设备id 这个问题来自于Is there a unique Android device ID? 我对这个问题的答案做了整理,包括将另 ...
- Visual Studio 2010 Express for Windows Phone 永久免费序列号
Visual Studio 2010 Express for Windows Phone 永久免费序列号:YDK44-2WW9W-QV7PM-8P8G8-FTYDF
- 游戏手柄(JoyStick)编程学习笔记(2)
在我的上一篇博客中(http://blog.csdn.net/liyuanbhu/article/details/51714045),介绍了通过 multimedia joystick API 来访问 ...
- 15 [网络编程]-ssh远程命令
1.执行命令os.system('ls') os.system 返回1 or 0 ,不能当做数据发送 # windows # dir 查看某个文件夹下子自文件名与子文件夹名 # ipconfig 查 ...
- Openstack入门篇(十五)之如何创建生产使用的openstack镜像
在linux-node1节点上: [root@linux-node1 ~]# yum install -y openstack-nova-compute [root@linux-node1 ~]# y ...