使用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弹出窗口插件 LeanModal的使用方法
Mar 10 Javascript
javascript实现日历控件(年月日关闭按钮)
Dec 12 Javascript
DOM基础教程之事件类型
Jan 20 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
Aug 24 Javascript
JS简单实现String转Date的方法
Mar 02 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
Jul 07 Javascript
Highcharts学习之数据列
Aug 03 Javascript
AngularJs ng-route路由详解及实例代码
Sep 14 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
Jan 11 Javascript
js实时监控文本框输入字数的实例代码
Jan 18 Javascript
vue实现百度语音合成的实例讲解
Oct 14 Javascript
vue路由切换时取消之前的所有请求操作
Sep 01 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
Discuz 5.0 中读取纯真IP数据库函数分析
2007/03/16 PHP
PHP读取MySQL数据代码
2008/06/05 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
php递归遍历多维数组的方法
2015/04/18 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
JavaScript的parseInt 进制问题
2009/05/07 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
JavaScript利用Date实现简单的倒计时实例
2017/01/12 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
JavaScript基础心法 数据类型
2018/03/05 Javascript
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
2018/05/07 Javascript
element-ui 关于获取select 的label值方法
2018/08/24 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
python中dir函数用法分析
2015/04/17 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
Python csv文件记录流程代码解析
2020/07/16 Python
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
致标枪运动员加油稿
2014/02/15 职场文书
暑期研修感言
2014/02/17 职场文书
乔迁之喜主持词
2014/03/27 职场文书
治超工作实施方案
2014/05/04 职场文书
雷锋观后感
2015/06/10 职场文书
Python+uiautomator2实现自动刷抖音视频功能
2021/04/29 Python
Python手拉手教你爬取贝壳房源数据的实战教程
2021/05/21 Python