Gulp

179 阅读1分钟

需要在目录下定义gulpfile.js文件 作为gulo入口文件

gulp中的任务需要手动标识任务结束

```
exports.foo = done => {  console.log('foo task')  done() // 标识任务完成}
// 默认任务
exports.default = done => {  console.log('default task')  done()}
// gulp 4.0前 需要task函数来注册任务
const gulp = require('gulp')
gulp.task('bar', done => {
  console.log('bar')
  done()
})```

Gulp组合任务

通过series和parallel组合多个任务

series是串行任务 执行一个再一个

parallel是并行任务 会全部任务一起执行

组合任务可以嵌套组合

const { series, parallel } = require('gulp')
exports.task1 = done => {
  console.log('task1')
  done()
}
exports.task2 = done => {
  console.log('task2')
  done()}exports.task3 = done => {
  console.log('task3')
  done()
}
exports.foo = series(task1, task2, task3) // 执行一个再一个
exports.bar = parallel(task1, task2, task3) // 一起执行

Gulp 异步任务

Gulp中异步任务支持JavaScript中3种异步任务的处理方式和node环境的stream方式

const { series, parallel } = require('gulp')
exports.task1 = done => {
  console.log('task1')
  done()
}
exports.task2 = done => {
  console.log('task2')
  done()}exports.task3 = done => {
  console.log('task3')
  done()
}
exports.foo = series(task1, task2, task3) // 执行一个再一个
exports.bar = parallel(task1, task2, task3) // 一起执行

自动化构建核心

自动化构建工程的核心分为 读取 转换 写入

这个过程在Gulp是流的方式来完成,Gulp是一个基于流来构建的系统,可以在转换流中加入各种插件来实现效果

Gulp文件操作API

Gulp中提供了很好的文件操作API(src、dest),可以通过src来读取文件得到读取流,再使用Gulp的插件来实现转换流工作,最后用dest完成写入操作

// 实现这个项目的构建任务
const { src, dest } = require('gulp')
// 自动引入gulp的插件
const loadPlugins = require('gulp-load-plugins')
const plugins = loadPlugins()
// 清理任务 清除dist的文件
exports.style = () => {  
  // src读取文件
  return src('src/assets/styles/*.scss', { base: 'src' })
  // 这里进行转换流操作
  .pipe(plugins.sass({ outputStyle: 'expanded' })) 
  // dest写入文件
  .pipe(dest('dist'))
}

一个gulp例子

gitee.com/weixiaonan/…