使用GruntJS构建Web程序之合并压缩篇


Posted in Javascript onJune 06, 2014

有如下步骤:

1.新建项目Bejs
2.新建文件package.json
3.新建文件Gruntfile.js
4.命令行执行grunt任务
 

一、新建项目Bejs
源码放在src下,该目录有两个子目录asset和js。js下放selector.js和ajax.js,这在上一篇已经讲了如何合并压缩它们。这篇只关注asset目录,asset目录下放了一些图片和css文件。一会会把两个css资源reset.css和style.css合并,压缩到dest/asset目录。一个合并版本all.css,一个压缩版本all-min.css。

使用GruntJS构建Web程序之合并压缩篇

二、新建package.json
package.json放在根目录下,它的意义上一篇已经介绍过了。 现在的项目结构如下

使用GruntJS构建Web程序之合并压缩篇

package.json内容需符合JSON语法规范,如下

{
  "name": "BeJS",
  "version": "0.1.0",
  "devDependencies": {
    "grunt": "~0.4.0",
    "grunt-contrib-concat": "~0.1.1",
    "grunt-css":   ">0.0.0"
  }
}

grunt-contrib-concat上一篇已经介绍过了,grunt-css 是这篇要使用的插件。

此时,打开命令行工具进入到项目根目录,敲如下命令: npm install

使用GruntJS构建Web程序之合并压缩篇
使用GruntJS构建Web程序之合并压缩篇

查看根目录,发现多了个node_modules目录,包含了四个子目录,见图

使用GruntJS构建Web程序之合并压缩篇

三、新建文件Gruntfile.js
Gruntfile.js也是放在项目根目录下,几乎所有的任务都定义在该文件中,它就是一个普通的js文件,里面可以写任意js代码而不仅局限于JSON。和package.json一样它也要和源码一样被提交到svn或git。

使用GruntJS构建Web程序之合并压缩篇

源码如下

module.exports = function(grunt) {
    // 配置
    grunt.initConfig({
        pkg : grunt.file.readJSON('package.json'),
        concat : {
            css : {
                src: ['src/asset/*.css'],
                dest: 'dest/asset/all.css'
            }
        },
        cssmin: {
            css: {
                src: 'dest/asset/all.css',
                dest: 'dest/asset/all-min.css'
            }
        }
    });
    // 载入concat和css插件,分别对于合并和压缩
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-css');
    // 默认任务
    grunt.registerTask('default', ['concat', 'cssmin']);
};

四、执行grunt任务
打开命令行,进入到项目根目录,敲 grunt

使用GruntJS构建Web程序之合并压缩篇

从打印信息看出成功的合并和压缩并生成了dest目录及期望的文件,这时的项目目录下多了dest,如下

使用GruntJS构建Web程序之合并压缩篇

至此,css合并压缩完毕。

Javascript 相关文章推荐
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
Jan 06 Javascript
JS保留小数点(四舍五入、四舍六入)实现思路及实例
Apr 25 Javascript
多种方式实现JS调用后台方法进行数据交互
Aug 20 Javascript
js自动查找select下拉的菜单并选择(示例代码)
Feb 26 Javascript
AngularJS快速入门
Apr 02 Javascript
AngularJS 表达式详细讲解及实例代码
Jul 26 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
Dec 22 Javascript
基于react框架使用的一些细节要点的思考
May 31 Javascript
VueJs使用Amaze ui调整列表和内容页面
Nov 30 Javascript
JS实现运动缓冲效果的封装函数示例
Feb 18 Javascript
vue-cli3脚手架的配置及使用教程
Aug 28 Javascript
在Vue里如何把网页的数据导出到Excel的方法
Sep 30 Javascript
Javascript动态引用CSS文件的2种方法介绍
Jun 06 #Javascript
jquery 隐藏与显示tr标签示例代码
Jun 06 #Javascript
Node.js中对通用模块的封装方法
Jun 06 #Javascript
JavaScript中对循环语句的优化技巧深入探讨
Jun 06 #Javascript
jquery修改网页背景颜色通过css方法实现
Jun 06 #Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
Jun 06 #Javascript
JavaScript也谈内存优化
Jun 06 #Javascript
You might like
PHP自定义函数收代码
2010/08/01 PHP
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
PHP 记录访客的浏览信息方法
2018/01/29 PHP
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
jquery常用操作小结
2014/07/21 Javascript
原生JS和jQuery版实现文件上传功能
2016/04/18 Javascript
如何用JS判断两个数字的大小
2016/07/21 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
React Native开发封装Toast与加载Loading组件示例
2018/09/08 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
django配置连接数据库及原生sql语句的使用方法
2019/03/03 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
Django模板Templates使用方法详解
2019/07/19 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
2019/10/14 Python
Python reduce函数作用及实例解析
2020/05/08 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
求职信格式范本
2013/11/15 职场文书
法学研究生自我鉴定范文
2013/12/04 职场文书
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
最新会计专业求职信范文
2014/01/28 职场文书
区域经理岗位职责
2015/02/02 职场文书
户外亲子活动总结
2015/05/08 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫