使用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 相关文章推荐
Prototype使用指南之range.js
Jan 10 Javascript
jquery 多行滚动代码(附详细解释)
Jun 17 Javascript
jQuery隔行变色与普通JS写法的对比
Apr 21 Javascript
Jquery网页内滑动缓冲导航的实现代码
Apr 05 Javascript
jQuery简单实现图片预加载
Apr 20 Javascript
javascript实现树形菜单的方法
Jul 17 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
Mar 28 Javascript
AngularJs 60分钟入门基础教程
Apr 03 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
May 13 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
Aug 25 Javascript
微信小程序 this和that详解及简单实例
Feb 13 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
Nov 19 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
上海无线电三厂简史修改版
2021/03/01 无线电
php中并发读写文件冲突的解决方案
2013/10/25 PHP
php通过ksort()函数给关联数组按照键排序的方法
2015/03/18 PHP
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
ext for eclipse插件安装方法
2008/04/27 Javascript
javascript 面向对象继承
2009/11/26 Javascript
ext jquery 简单比较
2010/04/07 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
不用一句js代码初始化组件
2016/01/27 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
Bootstrap基本组件学习笔记之列表组(11)
2016/12/07 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
vue中倒计时组件的实例代码
2018/07/06 Javascript
VUE项目实现主题切换的多种方法
2020/11/26 Vue.js
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
python入门:这篇文章带你直接学会python
2018/09/14 Python
Python中安装easy_install的方法
2018/11/18 Python
python同步两个文件夹下的内容
2019/08/29 Python
Django框架反向解析操作详解
2019/11/28 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
上海某公司.net方向笔试题
2014/09/14 面试题
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
不假外出检讨书
2014/01/27 职场文书
《珍珠泉》教学反思
2014/02/20 职场文书
2015廉洁自律个人总结
2015/02/14 职场文书
借条格式范本
2015/05/25 职场文书