大前端 — gulp 的简单学习

1、gulp 的简单实用

yarn add gulp --dev

在根目录创建一个 gulpfile.js

exports.foo = done => {
    console.log('hello gulp')
    done() // 任务完成  目前的 gulp 只支持 异步的任务,也就是说,一定要执行 这个 done
}

yarn gulp foo  // 执行这里 导出的 gulp 命令

组合任务

const { series, parallel } = require('gulp')

const task1 = done => {
    setTimeout(() => {
        done()
    }, 100)
}
const task2 = done => {
    setTimeout(() => {
        done()
    }, 100)
}
const task3 = done => {
    setTimeout(() => {
        done()
    }, 100)
}

// 依次执行
exports.foo = series(task1, task2, task3)
// 并行执行
exports.bar = parallel(task1, task2, task3)

除了 前面的 done 之外,其他的异步任务 执行方式,实用 Promise 和 async await

exports.usePromiseResolve = () => {
    return Promise.resolve()
}
exports.usePromiseReject = () => {
    return Promise.reject()
}
exports.useAsync = async () => {
    await Promise.resolve()
}

基础的构建流的过程

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


exports.default = () => {
    // 文件流读入
    const read = fs.createReadStream('./package.json')
    // 文件流写入
    const write = fs.createWriteStream('./src/package.json')

    // 文件转换
    const transform = new Transform({
        transform: (chunk, encoding, callback) => {
            // 核心的转换功能
            const input = chunk.toString()
            const output = input + '//transformed'
            callback(null, output)
        }
    })
    read
      .pipe(transform)  // 先将数据使用 转换,然后再 执行 输出
      .pipe(write)
    return read
}

插件的使用

yarn add gulp-clean-css --dev  // 压缩 css

yarn add gulp-rename // 重命名

const { src, dest } = require('gulp')
const cleanCss = require('gulp-clean-css')
const rename = require('gulp-rename')

exports.default = () => {
    return src('src/*.css')  // 入口
           .pipe(cleanCss())
           .pipe(rename({ extname: '.min.css'}))
           .pipe(dest('dist'))  // 出口
}

yarn gulp  // 默认执行 default  命令

const { src, dest, parallel, series, watch } = require('gulp')

... 配置 ...
const compile = parallel(style, script, page)

// 上线之前执行的任务
const build =  series(
  clean,
  parallel(
    series(compile, useref),
    image,
    font,
    extra
  )
)

const develop = series(compile, serve)

module.exports = {
  clean,
  build,
  develop
}

更深入的配置这里写不下了,贴个地址

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值