一、工具选择
CSS预处理语言LESS

构建工具gulp(基于node环境)
gulp插件:
gulp-connect——主要是用来运行一个webserver

npm install --save-dev gulp-connect

插件介绍:https://www.npmjs.com/package/gulp-connect

gulp.spritesmith——雪碧图

npm install gulp.spritesmith --save-dev

插件介绍:https://www.npmjs.com/package/gulp.spritesmith

gulp-less——less转CSS

npm install gulp-less --save-dev

插件介绍:https://www.npmjs.com/package/gulp-less


PS切图工具:

cutandslice——这是一款快速裁切透明图标的工具,配合spritesmith使用,可以很快的生成雪碧图片,整合多张小图,减少有服务器请求。
工具网址:http://www.cutandslice.me/#en
教程网址:http://www.zcool.com.cn/article/ZNDYzODA=.html

二、目录设定

|- \ [根目录]
   |--project
    |--- dist [临时生成点,可随时删除]
    |--- images [图片文件夹]
    |--- icon [内存放common、member_center两个文件图标]
    |--- js [JS文件]
    |--- less [less样式]
    |--- member_center [用户后台样式]
    |--- part [公用样式]
    |--- ./ [PC前台样式]
    |--- member_center [用户后台html文件]
    |--- ./ [PC html文件]
  |-- node_modules [node模块]
  |-- PSD [PSD文件存放点]
  |-- gulpfile.js [gulp 配置文件]
  |-- package.json [node模块包文件]

 

三、gulpfile规则编写

  • 加载模块
var gulp = require('gulp'),  
connect = require('gulp-connect'),
del = require('del'),
minifyCSS = require('gulp-minify-css'),
spritesmith = require('gulp.spritesmith'),
less = require('gulp-less');
  • 创建任务,将开发模式下的文件放置到dist目录
    task[dist_html]:用于处理html文件

    gulp.task('dist_html',function(){
    return gulp.src('./project/**/*.html')
    .pipe(gulp.dest('./project/dist'))
    })

    task[dist_js]:用于处理JS文件

    gulp.task('dist_js',function(){
    return gulp.src('project/js/**/*.js')
    .pipe(gulp.dest('project/dist/js'));
    })

    task[dist_less]:用于处理less文件,将其转为css

    gulp.task('dist_Less', function () {
    return gulp.src('project/less/*.less')
    .pipe(less())
    .pipe(gulp.dest('project/dist/css/front'));
    })

    task[dist_img]:移动图片到dist目录

    gulp.task('dist_img',['dist_icon'],function(){
    return gulp.src(['./project/images/**/*.{png,jpeg,gif,jpg}'])
    .pipe(gulp.dest('./project/dist/images/'))
    })

    task[sprite_common]:整合image/icon/common下的目录到icon.png

    gulp.task('sprite_common', function () {
    
        return gulp.src('project/images/front/icon/common/*.png')//需要合并的图片地址
    .pipe(spritesmith({
    imgName: 'icon.png',//保存合并后图片的地址
    cssName: 'sprite.less',//保存合并后对于css样式的地址
    padding:5,//合并时两个图片的间距
    algorithm: 'top-down',//注释1
    cssTemplate: function (data) {
    var arr=[];
    data.sprites.forEach(function (sprite) {
    arr.push(".icon."+sprite.name+
    "{" +
    "background-image: url('/images/front/"+sprite.escaped_image+"');"+
    "background-position: "+sprite.px.offset_x+" "+sprite.px.offset_y+";"+
    "width:"+sprite.px.width+";"+
    "height:"+sprite.px.height+";"+
    "}\n");
    });
    return arr.join("");
    } }))
    .pipe(gulp.dest('project/less/part'));
    });

    task[del_old_icon]:删除旧的icon.png

    gulp.task('del_old_icon',function(){
    del(['./project/images/front/icon.png']);
    })

    task[dist_icon]:移动新的icon.png到/image下
    注:dist_icon执行前会先执行del_old_icon

    gulp.task('dist_icon',['del_old_icon'],function(){
    return gulp.src(['./project/less/part/icon.png')
    .pipe(gulp.dest('./project/images/front/'));
    })

    task[del_dist]:删除dist目录

    gulp.task('del_dist',function(){
       del('./project/dist/');
    })
  • 整合任务以便调用执行
    总的任务整合为两部分,一部分为雪碧图整合,另一部分为dist目录生成。

    gulp.task('default',['dist_Less','dist_html','dist_js','dist_img']);
    gulp.task('sprite',['sprite_common']);

      

 

gulp布局构建小结的更多相关文章

  1. 关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用

    关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用   工作环境:window下 在一切的最开始,安装node.js (中文站,更新比较慢http://nodejs.cn/) ...

  2. gulp进阶构建项目由浅入深

    gulp进阶构建项目由浅入深 阅读目录 gulp基本安装和使用 gulp API介绍 Gulp.src(globs[,options]) gulp.dest(path[,options]) gulp. ...

  3. 基于Gulp + Browserify构建es6环境下的自动化前端项目

    随着React.Angular2.Redux等前沿的前端框架越来越流行,使用webpack.gulp等工具构建前端自动化项目也随之变得越来越重要.鉴于目前业界普遍更流行使用webpack来构建es6( ...

  4. gulp自动化构建工具的使用

    gulp自动化构建工具: 把前端开发常见的处理(“搬砖”)程序,通过一个工具模块管理起来,只需配置一次,达到自动处理目的,简化开发,提高效率!! 安装: 1.全局安装(全局安装一个gulp命令) A. ...

  5. gulp 前端构建工具入门

    gulp 前端构建工具入门 标签(空格分隔): gulp 1. 安装gulp npm i -g gulp 2. 创建gulp项目 2.1 Hello world 使用npm init初始化项目文件夹. ...

  6. gulp 自动化构建html项目--自动刷新

    使用gulp自动化构建项目是前端学习的重要部分,gulp依赖于node.js.首选电脑要配置node和npm. 查看node版本号 node --version 查看npm 版本 npm --vers ...

  7. 使用ConstraintLayout(约束布局)构建响应式UI

    使用ConstraintLayout(约束布局)构建响应式UI 转 https://www.300168.com/yidong/show-2740.html     核心提示:ConstraintLa ...

  8. gulp 前端构建工具使用

    gulp 前端构建工具使用 1.新建一个web  h5项目 2.准备好gulpfile.js文件 (1)下载链接:https://pan.baidu.com/s/116J-BaYOMRzeJW3i_J ...

  9. 应用gulp工具构建个自动算rem布局的小例子

    因为最近可能需要做移动端rem布局,因为rem布局需要将px转化成rem,如果次都需要拿计算器算就太low了,所以就想到用less和gulp. 因为也是初学gulp,站点的文件结构还没想到太好,也只是 ...

随机推荐

  1. 关于Integer的比较,今天又犯了一个低级错误,记录下

    今天查看以前所写的代码,看到有一部分被人改了,代码如下: if (orgId != organizationUpdateReq.getOrgId()) { //orgId的类型为Integer,org ...

  2. TortoiseGit 使用 HTTP 方式每次 PUSH 无需输入密码的方法

    由于 BitBucket 被墙,导致使用时只能用HTTPS代理的方式,但TortoiseGit貌似没有记忆密码的功能,以至于每次push时都要求输入密码,很是麻烦!在网上搜到的保存密码的方式也有点笨. ...

  3. jqeury datatable/http://www.cnblogs.com/jobs2/p/3431567.html

    0.http://blog.csdn.net/mickey_miki/article/details/8240477 1.1 修改默认值 代码  841处options 添加分页选择 oInit.bL ...

  4. poj1182(带权并查集)

    题目链接:http://poj.org/problem?id=1182 题意:题目告诉有  3  种动物,互相吃与被吃,现在告诉你  m  句话,其中有真有假,叫你判断假的个数  (  如果前面没有与 ...

  5. string类小结

    要想使用标准C++中string类,必须要包含 #include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件 ...

  6. 自对齐(self-aligned)

    C语言是自对齐的,32位以4字节对齐,64位以8字节对齐(1字节=8 bits) 自对齐的好处:在一条指令内完成数据的取或者存的操作,使得内存访问更快:否则,如果一个变量跨机器字存储,那么要做两次或更 ...

  7. 修改mysql数据库 允许远程访问

    首先使用root身份进入MySQL mysql>use mysql; //进入mysql表 mysql> selecthost,user from user;  //查看结果是不是root ...

  8. css设置超出部分文档隐藏(在table标签中不好使解决方案在下)

    css设置: .text-over{overflow: hidden;white-space: nowrap;text-overflow: ellipsis;cursor: pointer} div设 ...

  9. php调试利器之phpdbg

    信海龙的博客 php调试利器之phpdbg 简介 PHPDBG是一个PHP的SAPI模块,可以在不用修改代码和不影响性能的情况下控制PHP的运行环境. PHPDBG的目标是成为一个轻量级.强大.易用的 ...

  10. c++ tricks

    1 关于virtual关键字的实验 1.1 在派生类中改变virtual函数访问权限 定义两个类A,B,其中B公有派生于A.A中定义一个private成员虚函数func,B中覆写此函数,但是将其访问权 ...