使用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编程起步(第三课)
Feb 27 Javascript
用Juery网页选项卡实现代码
Jun 13 Javascript
JavaScript网页定位详解
Jan 13 Javascript
js实现的二级横向菜单条实例
Aug 22 Javascript
Javascript创建类和对象详解
May 31 Javascript
详解Angular4中路由Router类的跳转navigate
Jun 09 Javascript
一个简易时钟效果js实现代码
Mar 25 Javascript
浅谈Webpack自动化构建实践指南
Dec 18 Javascript
JavaScript中利用Array filter() 方法压缩稀疏数组
Feb 24 Javascript
Express的HTTP重定向到HTTPS的方法
Jun 06 Javascript
详解Vue中watch对象内属性的方法
Feb 01 Javascript
Node.js爬虫如何获取天气和每日问候详解
Aug 26 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
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
Laravel手动分页实现方法详解
2016/10/09 PHP
php封装的单文件(图片)上传类完整实例
2016/10/18 PHP
Jquery实现图片预加载与延时加载的方法
2014/12/22 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
最全的Javascript编码规范(推荐)
2016/06/22 Javascript
利用jquery获取select下拉框的值
2016/11/23 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
Python 错误和异常小结
2013/10/09 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
python下载文件记录黑名单的实现代码
2017/10/24 Python
Python编程实现蚁群算法详解
2017/11/13 Python
Django框架多表查询实例分析
2018/07/04 Python
python批量从es取数据的方法(文档数超过10000)
2018/12/27 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
Python高并发和多线程有什么关系
2020/11/14 Python
荷兰手表网站:Watch2Day
2018/07/02 全球购物
英国家喻户晓的家居商店:The Range
2019/03/25 全球购物
中间件分为哪几类
2016/09/18 面试题
小学生期末自我鉴定
2014/01/19 职场文书
社区文艺活动方案
2014/08/19 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
鸡毛信观后感
2015/06/11 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL