gulp 使用案例

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": "*"
  }
}

  

时间: 2024-10-27 05:15:01

gulp 使用案例的相关文章

gulp 编译es6 react 教程 案例 配置

1.gulp基本配置: var gulp = require('gulp'), watch = require('gulp-watch'), babel = require('gulp-babel'); var browserify = require('gulp-browserify'); var SourceMap = require('gulp-sourcemaps'); var SourceMapSupport = require('gulp-sourcemaps-support');

gulp plugins 插件介绍

原文:http://ju.outofmemory.cn/entry/103253 鸟窝 2014-11-28 3020 阅读 gulp Gulp是一个构建工具, 功能类似grunt, 以及Java生态圈的ant, maven, gradle等. 其它的javascript生态圈的构建工具可以参考: List of JavaScript Build Tools它采用了一种流式处理的方式, 编写起来简单直观. 相对于其它javascript构建工具, 母亲啊它的star数是仅次于grunt,流行度还

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

STEP 1:设置开发环境 与 Yeoman 的所有交互都是通过命令行.Mac 系统使用 terminal.app,Linux 系统使用 shell,windows 系统可以使用 cmder/PowerShell/cmd.exe. 1.1 安装条件 安装yeoman之前,你需要先安装如下内容 Nodejs v4 或者更高版本 npm git 通过以下命令检查是否安装 Node 环境以及 npm 管理工具. $ node -v && npm -v npm 默认随 Node 一起安装.有些 N

gulp之静态资源的版本控制

最近,因为校友网项目开始有些规模了.开始就要考虑对静态资源进行工程自动化的管理.一讲到前端的自动化工具,大家或许都会想到Grunt,Gulp,或者百度的FIS.这三个都有各自的特点,大家可以依据自己的喜好,选择工具.至于为什么选择Gulp,因为Grunt的gruntfile配置真的很头大好吗!简直看到头晕晕,但是还是有不少人喜欢这种方式的.然后FIS真心很强大,你所需要的,基本它都提供了,并且做得很好很简单,如果你急于马上使用可以赶紧去看看.而我为什么不用呢,感觉可能是因为,有点黑盒子?哈哈哈.

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

问题描述: 在使用gulp当中,自动生成的node_modules文件夹,因为文件目录层级太深,无法系统删除,用360粉碎工具也报错 解决方法: 使用npm中的插件rimraf,专门用于删除的模块插件 1.安装:npm install -g rimraf(全局安装) 2.使用:先定位目标文件夹的父级目录,然后命令行输入rimraf ***(***为需要删除的文件夹名称), 案例:(命令行操作,删除gulptest下的node_modules文件夹) 整个node_modules文件夹被删除的干干

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

前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为庞大和复杂,代码维护.打包.发布等流程也变得极为繁琐,同时浪费的时间和精力也越来越多,当然人为的错误也随着流程的增加而增加了更多的出错率.致使每一个团队都希望有一种工具,能帮助整个团队在开发中能精简流程.提高效率.减少错误率.随之讨论自动化部署也越来越多,并且国内很多大型团队也都有自己成熟的自动化部

Grunt、Gulp和Webpack区别

1.Grunt Grunt 的出现早于 Gulp,Gulp 是后起之秀.他们本质都是通过 JavaScript 语法实现了 shell script 命令的一些功能.比如利用 jshint 插件实现 JavaScript 代码格式检查这一功能.早期需要手动在命令行中输入  jshint test.js,而 Grunt 则通过 Gruntfile.js 进行配置 // Gruntfile.js module.exports = function(grunt) { grunt.initConfig(

手把手创建gulp

这几天安装gulp踩了不少坑,现在讲解一个入门的案例解析: ==首先大家要确保node.npm.npx.gulp安装是否成功 == 这些安装都是傻瓜式安装,大家可以找到相应的教材. 创建一个自己的文件夹,通过cmd命令或者手动创建都ok 此处讲解的是mpn全局安装后的 1.cd进入到目标文件夹 cd cd E:\code\js\gulp02 2.初始化 npm init 人员如果没有特殊要求,直接默认下一步 3.查看是否出现一个package.json的文件 4.创建一个gulpfile.js在

gulp教程(sass,livereload,md5,css压缩,js压缩,img的base64)

环境 node -v  v6.10.3 npm -v  3.10.10 package.json如下: { "name": "zhcsdata", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": &