Gulp基本用法

随笔2016-12-202 分钟gulp

Gulp 是一个模块化打包工具。 Gulp 本身只有几个入口,支持他拥有强大功能的是各种各样的插件。 Gulp 使用非常简单,只需要一个一个任务链式执行就可以了.

gulp 的用法

在项目根目录下创建一个gulpfile.jsGulpfile.js文件,文件内容就是对应的编译任务和方法。 最终通过module.exportsexports.default导出。 实际上,其导出方式其实就是nodejs的commonjs的导出语法。 因此,可以直接创建一个名为gulpfile.js的文件夹,内部含一个index.js也是可行的。

gulp 基本语法

const { src, dest } = require('gulp');
// gulp-babel 和 gulp-uglify 为 gulp 的插件。
const babel = require('gulp-babel');
const uglify = require('gulp-uglify');

exports.default = function() {
  // src 内部包含需要参与构建的文件,支持 *.xx **/*.xx 的模糊匹配
  return src('src/*.js')
    .pipe(babel())
    // pipe 管道,表示将上一层的处理结果传入下层,比如此处就是将 babel 的处理结果传入后面进行 uglify 混淆。
    .pipe(uglify())
    // dest 表示将构建的内容输出到哪里
    .pipe(dest('output/'));
}

构建的串行和并行

const { series, parallel } = require('gulp');
// 异步任务,参数为回调函数。
function jsMinify(cb) {
  // 任务的具体处理方法
  cb();
}
function cssMinify(cb) {
  cb();
}
function publish(cb) {
  cb();
}
// series 表示串行执行任务
exports.seriesBuild = series(cssMinify, jsMinify)
// parallel 表示并行执行任务
exports.parallelBuild = parallel(cssMinify, jsMinify)
// 串行和并行混合执行
exports.build = series( parallel(cssMinify, jsMinify), publish);

watch 文件监听

// 当被监听文件有修改的时候触发回调函数,在回调里面执行相应的任务,比如文件修改之后重新编译。
gulp.watch('js/**/*.js', function(event) {
  console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
});

gulp 插件

gulp 本身没有多少功能,绝大部分功能都来自于其插件。 下面是一些常用的插件。

gulp-change 过滤掉未改过的文件
gulp-typescript ts编译插件
gulp-if 条件判断插件
gulp-image 压缩图片
gulp-mp-npm 微信小程序提取npm依赖包的插件
gulp-ts-alias 处理tsconfig中的别名
gulp-pretty-data 压缩美化xml, json, css, sql

更多插件可查看官方插件文档

以上为 gulp 最基本的用法,如果需要进阶使用建议查看官方文档。 附录为中文文档。


相关链接

gulpjs中文官网


2023年03月31日更新