使用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选择器特辑 详细小结
May 14 Javascript
jquery.blockUI.js上传滚动等待效果实现思路及代码
Mar 18 Javascript
jQuery阻止事件冒泡具体实现
Oct 11 Javascript
JS显示表格内指定行html代码的方法
Mar 31 Javascript
微信小程序之ES6与事项助手的功能实现
Nov 30 Javascript
JavaScript实现一个空中避难的小游戏
Jun 06 Javascript
vue实现点击当前标签高亮效果【推荐】
Jun 22 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
Oct 24 jQuery
layui 动态设置checbox 选中状态的例子
Sep 02 Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
Nov 09 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
Jan 12 Javascript
JavaScript中this函数使用实例解析
Feb 21 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
adodb与adodb_lite之比较
2006/12/31 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
PHP flush 函数使用注意事项
2016/08/26 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
javascript parseInt与Number函数的区别
2010/01/21 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
php+js实现倒计时功能
2014/06/02 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
js格式化时间的方法
2015/12/18 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
Augularjs-起步详解
2016/07/08 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
vuex直接赋值的三种方法总结
2018/09/16 Javascript
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
原生JavaScript实现换肤
2021/02/19 Javascript
深入学习Python中的装饰器使用
2016/06/20 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
CSS3 mask 遮罩的具体使用方法
2017/11/03 HTML / CSS
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
造价工程师个人求职信
2013/09/21 职场文书
集体备课反思
2014/02/12 职场文书
组工干部演讲稿
2014/09/02 职场文书
县委常委班子专题民主生活会查摆问题及整改措施
2014/09/27 职场文书
个人买房协议书范本
2014/10/06 职场文书
2015年女职工工作总结
2015/05/15 职场文书
初中班长竞选稿
2015/11/20 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python