美文网首页
自动化构建篇之Gulp(一)

自动化构建篇之Gulp(一)

作者: 贰玖是只猫 | 来源:发表于2021-04-01 10:54 被阅读0次

Glup 是目前流行的自动化构建工具,它解决了Grunt中同类型文件多次执行不同任务时导致的内存消耗过大的情况。

入口文件 - gulpfile.js

与Grunt类似,也需要通过任务的形式来执行。

// 4.0以前
const gulp = require("gulp")
gulp.task("bar", done => {
    console.log("bar")
    done()
})
// 4.0以后
export.foo = done => {
    console.log("foo")
    done()
}

这里与Grunt类似的一点是, 运行的时候都可以指定任务名,而假如不接任务名就默认执行 default任务。不同的是,gulp默认是异步任务,所以每次执行完任务后需要调用一下函数回调,这里我们默认参数为done,需要调用一下这个方法。

组合任务

  • series 组合串行任务
  • parallel 组合并行任务
const {series, parallel} = require("gulp")

const task1 = done => {
    setTimeout(() => {
        console.log("task1")
        done()
    }, 1000)
}
const task2 = done => {
    setTimeout(() => {
        console.log("task2")
        done()
    },2000)
}
const task3 = done => {
    setTimeout(() => {
        console.log("task3")
        done()
    },1000)
}
exports.foo = series(task1, task2, task3)
exports.bar = parallel(task1, task2, task3)

异步任务

  • 回调返回
    我们上面说过gulp的任务执行都是异步的,调用done()本身就是一种解决方式
    对于标记错误的方式只需要在done()传入错误参数。比如done(new Error("task error"))
  • Promise
    我们还可以通过返回Promise的形式去处理异步任务
exports.promiseTask = () => {
    console.log("promise task")
    return Promise.resolve()
}

exports.promiseTask_error = () => {
    console.log("promise error")
    return Promise.reject(new Error("promise error task"))
}
  • Async/Await
    async 是promise 的语法糖,也可用来处理异步任务
const timeout = time => {
    return new Promise(resolve => {
        setTimeout(resolve, time)
    })
}

exports.asyncTask = async () => {
    await timeout(1000)
    console.log("async task")
}
  • stream
    一种特殊的异步任务, 用于读写文件
exports.stream = () => {
    const readStream = fs.createReadStream("package.json")
    const writeStream = fs.createWriteStream("temp.txt")
    readStream.pipe(writeStream)
    return readStream //当完全pipe完之后返回
}

构建过程

读取流 -> 转换流 -> 写入流
模拟压缩css文件

const fs = require("fs")
const { Transform } = require("stream")

exports.default = () => {
    //文件读取流
    const read = fs.createReadStream("index.css")
    //文件写入流
    const write = fs.createWriteStream("index.min.css")

    //文件转换流
    const transform = new Transform({
        transform: (chunk, encodeing, callback) => {
            const input = chunk.toString() //chunk 是文件内容以字符数组的形式存在
            const output = input.replace(/\s+/g, "").replace(/\/\*.+?\*\//g, "")
            callback(null, output) // 回调错误,回调结果
        }
    }) 

    read.pipe(transform).pipe(write)
    return read
}

文件操作API

  • src 读取流
  • dest 写入流
  • 其他文件操作api插件
const {src, dest} = require("gulp")
const cleanCss = require("gulp-clean-css")
const rename = require("gulp-rename")

exports.default = () => {
    return src("*.css")
    .pipe(cleanCss())
    .pipe(rename({extname: ".min.css"}))
    .pipe(dest("dist"))
}

根本的使用方式就是使用利用提供的插件以文件流转换的形式达到我们不同的目的。
后面我们将通过案例的方式去使用Gulp

相关文章

  • 从使用到案例分析如何使用Gulp

    我们在《自动化构建篇之Gulp(一)》中已经初步介绍过了Gulp以及Gulp的简单的使用方式,了解了Gulp中的任...

  • JavaScript学习笔记(三十六)-- GULP

    GULP gulp 是一个项目开发的 自动化打包构建工具 基于 node 环境来运行的 什么是自动化打包构建工具 ...

  • 相关文章记录

    1.gulp构建工具相关信息 前端自动化构建工具gulp记录Gulp.js-livereload 不用F5了,实时...

  • 【前端工具】gulp构建工具的基本使用

    gulp是什么? gulp是前端开发中经常使用的自动化构建工具。自动化构建又是什么? 简单来说,一个完整的项目需要...

  • 自动化构建篇之Gulp(一)

    Glup 是目前流行的自动化构建工具,它解决了Grunt中同类型文件多次执行不同任务时导致的内存消耗过大的情况。 ...

  • 1,node.js

    自动化构建工具 gulp webpack grunt gulp--构建项目,压缩合并处理,依赖于 gulpf...

  • gulp和webpack的理解

    gulp和webpack都是自动化构建工具。 两者不同点: 1、gulp 是基于流的自动化构建工具, 通常以管道的...

  • 【前端日记-gulp系列-认识gulp】

    一、gulp介绍及用法 1. 介绍 gulp是一个自动化构建工具,可以帮助开发者构建整个项目流程中的自动化部分,比...

  • gulp入门教程

    gulp是前端的自动化构建工具,gulp的出现是希望能取代grunt,成为最流行的前端自动化构建工具,它与grun...

  • gulp

    gulp解释 GULP 是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器。GULP 是 基 于 Nod...

网友评论

      本文标题:自动化构建篇之Gulp(一)

      本文链接:https://www.haomeiwen.com/subject/ktcohltx.html