使用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 相关文章推荐
JavaScript实现的内存数据库LokiJS介绍和入门实例
Nov 17 Javascript
JavaScript数组Array对象增加和删除元素方法总结
Jan 20 Javascript
Bootstrap Table使用方法详解
Aug 01 Javascript
详解JavaScript模块化开发
Dec 04 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
Feb 22 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
Apr 13 Javascript
jQuery树插件zTree使用方法详解
May 02 jQuery
swiper移动端轮播插件(触碰图片之后停止轮播)
Dec 28 Javascript
Vue封装Swiper实现图片轮播效果
Feb 06 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
Jan 27 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
Feb 24 Javascript
vue postcss-px2rem 自适应布局
May 15 Vue.js
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
不用GD库生成当前时间的PNG格式图象的程序
2006/10/09 PHP
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
6种php上传图片重命名的方法实例
2013/11/04 PHP
跟我学Laravel之快速入门
2014/10/15 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
php实现多城市切换特效
2015/08/09 PHP
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
2009/06/14 Javascript
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
jQuery前台数据获取实现代码
2011/03/16 Javascript
基于jQuery的前端数据通用验证库
2011/08/08 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
什么是JavaScript注入攻击?
2016/09/14 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
JS实现模糊查询带下拉匹配效果
2018/06/21 Javascript
解决element UI 自定义传参的问题
2018/08/22 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
JS中的一些常用的函数式编程术语
2019/06/15 Javascript
vue实现行列转换的一种方法
2019/08/06 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
在 Django/Flask 开发服务器上使用 HTTPS
2014/07/03 Python
Python编写百度贴吧的简单爬虫
2015/04/02 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
python中input()与raw_input()的区别分析
2016/02/27 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
python 实现波浪滤镜特效
2020/12/02 Python
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
小学生获奖感言范文
2014/02/02 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
幼儿园保育员责任书
2014/07/22 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书