gulp布局构建小结
一、工具选择
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_icongulp.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布局构建小结的更多相关文章
- 关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用
关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用 工作环境:window下 在一切的最开始,安装node.js (中文站,更新比较慢http://nodejs.cn/) ...
- gulp进阶构建项目由浅入深
gulp进阶构建项目由浅入深 阅读目录 gulp基本安装和使用 gulp API介绍 Gulp.src(globs[,options]) gulp.dest(path[,options]) gulp. ...
- 基于Gulp + Browserify构建es6环境下的自动化前端项目
随着React.Angular2.Redux等前沿的前端框架越来越流行,使用webpack.gulp等工具构建前端自动化项目也随之变得越来越重要.鉴于目前业界普遍更流行使用webpack来构建es6( ...
- gulp自动化构建工具的使用
gulp自动化构建工具: 把前端开发常见的处理(“搬砖”)程序,通过一个工具模块管理起来,只需配置一次,达到自动处理目的,简化开发,提高效率!! 安装: 1.全局安装(全局安装一个gulp命令) A. ...
- gulp 前端构建工具入门
gulp 前端构建工具入门 标签(空格分隔): gulp 1. 安装gulp npm i -g gulp 2. 创建gulp项目 2.1 Hello world 使用npm init初始化项目文件夹. ...
- gulp 自动化构建html项目--自动刷新
使用gulp自动化构建项目是前端学习的重要部分,gulp依赖于node.js.首选电脑要配置node和npm. 查看node版本号 node --version 查看npm 版本 npm --vers ...
- 使用ConstraintLayout(约束布局)构建响应式UI
使用ConstraintLayout(约束布局)构建响应式UI 转 https://www.300168.com/yidong/show-2740.html 核心提示:ConstraintLa ...
- gulp 前端构建工具使用
gulp 前端构建工具使用 1.新建一个web h5项目 2.准备好gulpfile.js文件 (1)下载链接:https://pan.baidu.com/s/116J-BaYOMRzeJW3i_J ...
- 应用gulp工具构建个自动算rem布局的小例子
因为最近可能需要做移动端rem布局,因为rem布局需要将px转化成rem,如果次都需要拿计算器算就太low了,所以就想到用less和gulp. 因为也是初学gulp,站点的文件结构还没想到太好,也只是 ...
随机推荐
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 视图Nunjucks
视频地址:https://www.cctalk.com/v/15114923888328 视图 Nunjucks 彩虹是上帝和人类立的约,上帝不会再用洪水灭人. 客户端和服务端之间相互通信,传递的数据 ...
- 201671010127 2016—2017—2 Java怎样解决Java程序中中文乱码的问题。
这是本次第二次分享新手在编程中遇到的问题,相信很多Java新手和我一样,在Java编程中会遇到中文乱码的情况,下面我就给大家分享我遇到问题和解决问题的具体过程. 我先用Notepad++写了一个如下的 ...
- Windows10系统一键结束所有运行程序
当电脑及其卡顿的时候,想打开任务管理器关掉所有运行的程序的时候,也会变得及其困难.因此之前你如果有犀利的小程序设置,这都不会是问题. 1)空白处右键-新建-快捷方式 2)将下列代码复制到下列框中(注意 ...
- zoj1109-Language of FatMouse 【字典树】
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=109 Language of FatMouse Time Limit: 10 S ...
- discrete
discrete - 必应词典 美[dɪ'skrit]英[dɪ'skriːt] adj.离散的:分离的:各别的 网络不连续的:分立的:离散型
- 最小重组缓冲区和路径MTU发现
概括: 主要来源于unp,可参考:http://blog.csdn.net/ysu108/article/details/7764461 疑惑: 1. 最小重组缓冲区大小: ipv4为576,ipv6 ...
- 【校招面试 之 C/C++】第11题 C++ 纯虚函数
1.纯虚函数 成员函数的形参后面写上=0,则成员函数为纯虚函数. 纯虚函数声明: virtual 函数类型 函数名 (参数表列) = 0: class Person { virtual void Di ...
- sublime 配置python环境
1. 在工具栏点击Preferences,打开Browse Packages.在打开的文件夹中找到Python,并打开这个文件夹.找到文件Python.sublime-build,并打开. 2. 修改 ...
- 解决Pycharm添加虚拟解释器的报错问题
问题背景: 新添加一个virtualenv环境时,需要安装指定的django==1.9.8,但是在添加解释器时,总报一个fuck egg的问题!! 解决方式如下: 1. 2. 3.搞定
- BZOJ 1211[HNOI2004]树的计数 - prufer数列
描述 一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, …, dn,编程需要输出满足d(vi) ...