使用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 继承详解(一)
Jul 13 Javascript
cument.execCommand()用法深入理解
Dec 04 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
Mar 11 Javascript
js 获取经纬度的实现方法
Jun 20 Javascript
JS获取及验证开始结束日期的方法
Aug 20 Javascript
Js动态设置rem来实现移动端字体的自适应代码
Oct 14 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
Nov 16 Javascript
浅析script标签中的defer与async属性
Nov 30 Javascript
详解数组Array.sort()排序的方法
May 09 Javascript
使用JS代码实现俄罗斯方块游戏
Aug 03 Javascript
手写Vue弹窗Modal的实现代码
Sep 11 Javascript
36个正则表达式(开发效率提高80%)
Nov 17 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
根德YB400的电路分析
2021/03/02 无线电
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
Prototype 学习 Prototype对象
2009/07/12 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
基于JavaScript实现TAB标签效果
2016/01/12 Javascript
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
pandas按若干个列的组合条件筛选数据的方法
2018/04/11 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
详解Python odoo中嵌入html简单的分页功能
2019/05/29 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
为什么相对PHP黑python的更少
2020/06/21 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
MSC邮轮官方网站:加勒比海、地中海和世界各地的假期
2018/08/27 全球购物
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
syb养殖创业计划书
2014/01/09 职场文书
团代会闭幕词
2015/01/28 职场文书
三十年同学聚会感言
2015/07/30 职场文书
python状态机transitions库详解
2021/06/02 Python
zabbix监控mysql的实例方法
2021/06/02 MySQL
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP