1、gulp 配置:

// 引入 gulp
var gulp = require('gulp'); var watch = require('gulp-watch'), //导入所有gulp需要的模块
spriter = require('gulp-css-spriter'),
spritesmith = require('gulp.spritesmith'),
imagemin = require('gulp-imagemin'),
pngquant = require("imagemin-pngquant"),
base64 = require('gulp-base64'),
autoprefixer = require('gulp-autoprefixer'),
rename = require("gulp-rename"),
cssmin = require('gulp-cssmin'),
connect = require('gulp-connect'),
concat = require('gulp-concat'),
uglify = require('gulp-uglify'),
less = require('gulp-less'),
sass = require('gulp-sass'),
uncss = require('gulp-uncss-sp'),
del = require('del'),
watchFile = (w_path, w_task) => {
var chokidar = require('chokidar');
chokidar.watch(w_path, { ignored: /[\/\\]\./ }).on('all', (event, path) => {
console.log(event, path, 'info');
if (w_task == 'scss' && event == 'unlink') {
del(['./css/*.css'])
}
gulp.run(w_task);
});
}; gulp.task('server', function() { //创建server
connect.server({
root: './',
port: 8088,
livereload: true
});
}); // 编译Sass
gulp.task('scss', function() { //创建任务
gulp.src(['./scss/*.scss'])
.pipe(sass().on('error', sass.logError))
.pipe(autoprefixer({
browsers: ['last 6 Chrome versions', 'last 3 Safari versions', 'iOS >= 5', 'Android >= 4.0'],
cascade: true, //是否美化属性值 默认:true 像这样:
//-webkit-transform: rotate(45deg);
// transform: rotate(45deg);
remove: true //是否去掉不必要的前缀 默认:true
}))
.pipe(cssmin())
.pipe(gulp.dest('./css'))
.pipe(connect.reload());
}); gulp.task('less', function() {
gulp.src(['./less/*.less'])
.pipe(less())
.pipe(autoprefixer({
browsers: ['last 6 Chrome versions', 'last 4 Explorer versions', 'Firefox ESR', 'last 2 Explorer versions', 'iOS >= 5', 'Android >= 4.0', '> 5%'],
cascade: true, //是否美化属性值 默认:true 像这样:
//-webkit-transform: rotate(45deg);
// transform: rotate(45deg);
remove: true //是否去掉不必要的前缀 默认:true
}))
.pipe(cssmin())
.pipe(gulp.dest('./css'))
.pipe(connect.reload());
}); gulp.task('uncss', function() {
return gulp.src('css/*.css')
.pipe(uncss({
html: ['*.html']
}))
.pipe(gulp.dest('./css'));
}); gulp.task('cssmin', function() {
gulp.src(['./css/*.css'])
.pipe(cssmin())
.pipe(gulp.dest('./css'));
}); // 监听任务
gulp.task('watch', function() {
/* gulp.watch('*.html', ['html']); */ // 监听根目录下所有.html文件
gulp.watch('./scss/*.scss', ['scss']);
});
gulp.task('watchIcon', function() {
watchFile('./img/icon/', 'icon2')
});
gulp.task('watchScss', function() {
watchFile('./scss/', 'scss')
}); // 默认任务
gulp.task('default', ['server', 'watchIcon', 'watchScss']); gulp.task('sprite', function() { var timestamp = +new Date();
//需要自动合并雪碧图的样式文件
return gulp.src('./scss/*.scss')
.pipe(spriter({
// 生成的spriter的位置
'spriteSheet': './img/' + timestamp + '.png',
// 生成样式文件图片引用地址的路径
// 如下将生产:backgound:url(../images/sprite20324232.png)
'pathToSpriteSheetFromCSS': '../img/' + timestamp + '.png'
}))
//产出路径
.pipe(gulp.dest('./test'));
}); gulp.task('icon2', function() {
return gulp.src('./img/icon/*.png') //需要合并的图片地址
.pipe(spritesmith({
imgName: 'img/sprite.png', //保存合并后图片的地址
cssName: 'scss/comm/icon.scss', //保存合并后对于css样式的地址
padding: 20, //合并时两个图片的间距
algorithm: 'binary-tree', //注释1
cssTemplate: function(data) {
var arr = [];
data.sprites.forEach(function(sprite) {
var $width = parseInt(sprite.px.width);
var $height = parseInt(sprite.px.height);
var $ofx = parseInt(sprite.px.offset_x);
var $ofy = parseInt(sprite.px.offset_y);
var $tw = sprite.total_width;
var $th = sprite.total_height;
arr.push(".icon-" + sprite.name +
"{" +
"background-image: url(" + sprite.escaped_image + ");" +
"background-position: " + $ofx + "px " + $ofy + "px;" +
"width:" + $width + "px;" +
"height:" + $height + "px;" +
"background-size:" + $tw + "px " + $th + "px;" +
"background-repeat:" + "no-repeat;" +
"display:" + "inline-block;" +
"}\n");
});
return arr.join("");
}
}))
.pipe(gulp.dest('./'));
});
gulp.task('imagemin', function() {
return gulp.src('./img/ft/*.{png,jpg,gif,ico}')
.pipe(imagemin({
optimizationLevel: 5,
progressive: true,
multipass: true,
use: [pngquant({
quality: '50-70'
})]
}))
.pipe(gulp.dest('./img/'))
}); gulp.task('base', ['sass'], function() {
return gulp.src('./scss/_reset.scss')
.pipe(base64({
baseDir: 'xgou',
extensions: ['png'],
maxImageSize: 20 * 1024,
debug: false
}))
.pipe(gulp.dest('./scss/'));
});

2、package.json:

{
"devDependencies": {
"del": "^2.2.2",
"gulp": "^3.9.1",
"gulp-autoprefixer": "*",
"gulp-base64": "*",
"gulp-concat": "*",
"gulp-connect": "*",
"gulp-css-spriter": "*",
"gulp-cssmin": "*",
"gulp-imagemin": "*",
"gulp-less": "*",
"gulp-livereload": "*",
"gulp-rename": "*",
"gulp-sass": "*",
"gulp-uglify": "*",
"gulp-uncss-sp": "^0.0.1",
"gulp-watch": "*",
"gulp-webserver": "*",
"gulp.spritesmith": "*",
"imagemin-pngquant": "*",
"node-sass": "*",
"spritesmith": "*"
}
}

  

gulp 使用案例的更多相关文章

  1. gulp初探

    很多人都在用grunt和gulp,我现在连github都不用..为了说自己是个前端,还是搞搞gulp吧 nodejs很多人都会安装,这个不是问题 npm模块现在好像是自带的..我忘了.. 先全局安装下 ...

  2. gulp 编译es6 react 教程 案例 配置

    1.gulp基本配置: var gulp = require('gulp'), watch = require('gulp-watch'), babel = require('gulp-babel') ...

  3. Yeoman 官网教学案例:使用 Yeoman 构建 WebApp

    STEP 1:设置开发环境 与yeoman的所有交互都是通过命令行.Mac系统使用terminal.app,Linux系统使用shell,windows系统可以使用cmder/PowerShell/c ...

  4. gulp使用技巧-删除node_modules文件夹,解决目录层次太深删除报错的问题

    问题描述: 在使用gulp当中,自动生成的node_modules文件夹,因为文件目录层级太深,无法系统删除,用360粉碎工具也报错 解决方法: 使用npm中的插件rimraf,专门用于删除的模块插件 ...

  5. gulp基本介绍

    一.gulp是什么 gulp就是用来机械化的完成重复性质(如less->css:js.css压缩:js混淆)的工作:gulp的机制就是将重复工作抽象成一个个的任务. 二.gulp使用 a.首先确 ...

  6. 前端开发自动化工作流工具,JavaScript自动化构建工具grunt、gulp、webpack介绍

    前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...

  7. gulp之静态资源防缓存处理

    最近,因为校友网项目开始有些规模了.开始就要考虑对静态资源进行工程自动化的管理.一讲到前端的自动化工具,大家或许都会想到Grunt,Gulp,或者百度的FIS.这三个都有各自的特点,大家可以依据自己的 ...

  8. gulp分享文档

    Grunt--I/O操作: 读取A → A.a() → 写出A → 读取A → A.b() → 写出A; gulp--数据流:读取A → A.a() → A.b() → 写出A. Part① 构建gu ...

  9. Gulp安装流程、使用方法及cmd常用命令导览

    Gulp安装流程.使用方法及CMD常用命令导览 来自前端小白的gulp及周边知识学习总结 一.名词介绍: Npm--node包管理工具 一开始我不理解,包管理工具是什么鬼.后来用到的gulp也好,gu ...

随机推荐

  1. 让Windows XP的键盘“说话”,全语音键盘

    长期面对无声的电脑,我们难免疲倦.如果正在输入的内容被系统一字(字母)不差地念出来,你还能在无声的疲倦中输入错误的内容吗?本文以Windows 2000/XP中一个鲜为人知的“讲述人”为例,来教你DI ...

  2. C#使用Xamarin开发Android应用程序 -- 系列文章

    Xamarin开发Android应用程序 利用Xamaria构建Android应用-公交发车信息屏 Xamarin版的C# SVG路径解析器 C#使用Xamarin开发可移植移动应用(1.入门与Xam ...

  3. APACHE REWRITE ? 匹配问号的写法

    RewriteRule 不会去匹配 ? 后面的字符串,需要用RewriteCond来匹配 把 /abc?id=123  =>  /def.php?id=123 的写法:   RewriteEng ...

  4. bootstrap-table设置表头宽度无效的解决方案

    bootstrap-table设置colmuns中某列的宽度无效时,需要给整个表设置css属性: .table { table-layout: fixed; }

  5. centos git server 的搭建

    安装环境  centos7 说明:centos  yum 库里面的git  好像是不区分 客户端和服务器端, 安装 git 以后 就可以创建  仓库,也可以检出 别的 git 仓库的  代码了.所以不 ...

  6. Python Scrapy环境搭建(一)

    本来是以学习的目的添加了几个QQ群,但是发现群内有着很多的小白都在咨询如何搭建环境的问题,所以我这里把自己搭建的方法分享下 1.首先我们需要查看下自己安装的python的版本; 最简单的版本就是在命令 ...

  7. JAVA高并发系列

    高并发Java(1):前言 高并发Java(2):多线程基础 高并发Java(3):Java内存模型和线程安全 高并发Java(4):无锁 高并发Java(5):JDK并发包1 高并发Java(6): ...

  8. Uedit编辑器编辑Velocity

    1.切换到源代码模式 UM.getEditor('editor').execCommand("source"); 2.给编辑器插入Velocity源码 $(".edui- ...

  9. 关于div

    <article id="a"> <div class="a1"></div> <div class="a2 ...

  10. 代码编辑器之sublime text插件

    sublimetext 学习资源:http://www.jianshu.com/p/d1b9a64e2e37 Sublime SFTP CTags – 让Sublime Text支持CTags. Si ...