使用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 打开窗口返回值实现代码
Mar 04 Javascript
JS 树形递归实例代码
May 18 Javascript
jquery中输入验证中一个不错的效果
Aug 21 Javascript
input 和 textarea 输入框最大文字限制的jquery插件
Oct 27 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
Dec 21 Javascript
单击按钮显示隐藏子菜单经典案例
Jan 04 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
Dec 24 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
Mar 24 Javascript
JavaScript中连接操作Oracle数据库实例
Apr 02 Javascript
javascript每日必学之继承
Feb 23 Javascript
浅谈AngularJS中$http服务的简单用法
May 15 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
May 08 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 随机数的产生、页面跳转、件读写、文件重命名、switch语句
2009/08/07 PHP
详解PHP匿名函数与注意事项
2016/03/29 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
JavaScript 空位补零实现代码
2010/02/26 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
js判断ie版本号的简单实现代码
2014/03/05 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
使用JavaScript+canvas实现图片裁剪
2015/01/30 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
返回函数的JavaScript函数
2016/06/14 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
详解Node.js开发中的express-session
2017/05/19 Javascript
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
python 获取本机ip地址的两个方法
2013/02/25 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python探索之pLSA实现代码
2017/10/25 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
Python PyInstaller库基本使用方法分析
2019/12/12 Python
MNIST数据集转化为二维图片的实现示例
2020/01/10 Python
如何理解python面向对象编程
2020/06/01 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
详解Python IO口多路复用
2020/06/17 Python
教师档案管理制度
2014/01/23 职场文书
法律专业自荐信
2014/06/03 职场文书
2014社区健康教育工作总结
2014/12/16 职场文书
检讨书格式
2015/05/07 职场文书