zoukankan      html  css  js  c++  java
  • 使用gulp构建自动化工作流

    • 简单易用
    • 高效构建
    • 高质量的生态圈

    可能很多人会说现在提gulp也太落后了吧,但我想说写点东西并不是为了讨论它是否过时,而是来帮助我们自己来记忆、整理和学习。任何工具,我需要,我才去使用它,正如此时我需要gulp一样。

    为了效率而使用工具

    安装

    • 全局安装 gulp命令:
    $ npm install --global gulp-cli
    
    • 作为项目的开发依赖(devDependencie)安装:
    $ npm install --save-dev gulp
    

    创建配置文件

    在项目根目录下创建一个名为 gulpfile.js 的文件:

    touch gulpfile.js
    

    API

    • gulp.src(globs[, options])

      读取目标源文件

    • gulp.dest(path[, options])

      向目标路径输出结果

    • gulp.pipe()

      将目标文件通过插件处理

    • gulp.watch(glob [, opts], tasks) 或 gulp.watch(glob [, opts, cb])

      监视文件系统,并且可以在文件发生改动时候做一些事情

    • gulp.task(name[, deps], fn): 任务

      定义一个gulp任务

    使用

    当配置完gulp.file后运行 gulp:

    $ gulp
    

    常用工具插件

    • gulp-sass

      sass/scss编译

    • gulp-eslint

      js代码校对

    • gulp.spritesmith

      生成sprite雪碧图

    • gulp-connect

      本地起一个websocket服务,实时刷新浏览器

    • gulp-changed

      1. 不浪费宝贵的时间处理没有改动的文件.gulp-changed会首先把文件进行比对,如果文件没有改动,则跳过后续任务,。
      2. 默认情况下,gulp只能检测流中的文件是否更改。gulp-changed的对比功能更加强大,比如可以知道导入/依赖的文件是否更改。
    • http-proxy-middleware
      路由代理中间件

    示例

    以下是我的gulp文件,仅供交流。

    
    'use strict';
    const gulp = require("gulp");
    
    /**
     * [sass sass/scss编译]
     */
    const sass = require("gulp-sass");
    
    /**
     * [eslint js代码检测]
     */
    const eslint = require('gulp-eslint');
    
    /**
     * [connect 本地起一个websocket服务,实时刷新浏览器]
     */
    const connect = require('gulp-connect');
    
    /**
     * [changed 比较文件变动]
     * 默认情况下,gulp只能检测流中的文件是否更改。
     * 如果您需要更高级的东西,比如知道导入/依赖的文件是否更改,则可以使用该插件。
     */
    const changed = require('gulp-changed');
    
    /**
     * [spritesmith 合并成雪碧图]
     */
    const spritesmith= ("gulp.spritesmith");
    
    /**
     * [proxy 中间代理件]
     */
    const proxy = require('http-proxy-middleware');
    
    let Pathconfig = {
        sassCompilePath: __dirname + "/scss/**/*.scss", //需要编译的scss文件路径
        sassDestPath: __dirname + "/css/",  //编译后的scss文件存放处
        htmlSrcPath: __dirname + "/html/*.html", //监控的html路径
        jsSrcPath: __dirname + "/js/*.js",  //监控的js文件路径
    }
    
    // html任务
    gulp.task("html",function(){
        gulp.src(Pathconfig.htmlSrcPath)
        .pipe(connect.reload());
    })
    
    // 样式任务
    gulp.task("stylus",function(){
        gulp.src(Pathconfig.sassCompilePath)
            .pipe(changed(Pathconfig.sassDestPath))
            .pipe(sass())
            .pipe(gulp.dest(Pathconfig.sassDestPath))
            .pipe(connect.reload());
    })
    
    // js任务
    gulp.task("js",function(){
        gulp.src([Pathconfig.jsSrcPath,'!node_modules/**'])
            .pipe(eslint())
            .pipe(eslint.formatEach('compact', process.stderr))
            .pipe(connect.reload());
    })
    
    // 监控变动
    gulp.task("watch",function(){
        gulp.watch([Pathconfig.htmlSrcPath], ['html']);
        gulp.watch([Pathconfig.sassCompilePath], ['stylus']);
        gulp.watch([Pathconfig.jsSrcPath], ['js']);
    })
    
    //定义livereload任务,起一个本地服务
    gulp.task('connect',function () {
        connect.server({
            root: __dirname,
            port: 8000,
            livereload: true
        });
    });
    
    
    gulp.task("default",['connect','watch'])
    
  • 相关阅读:
    判断一个图是否有环 无向图 有向图
    经典算法解析
    图的深度优先遍历DFS(邻接矩阵表示法)
    Prim算法求最小生成树MST以及和kruskal算法的对比
    oracle连接中出现错误ORA12541,ORA12514,ORA01017的解决方法
    visual studio 自动整理代码
    解决Google code和Google group无法登录的问题
    Dijkstra算法求单源最短路径(二)(BFS的改版)
    快速排序算法QuickSort
    推荐资料
  • 原文地址:https://www.cnblogs.com/yzg1/p/6288568.html
Copyright © 2011-2022 走看看