网站首页 > 基础教程 正文
Gulp 中的任务可以是可以分为 public(公有)和 private (私有)类型。
- 公有任务:从 gulpfile 中被导出的任务称为公有任务,可以通过 gulp 命令直接调用。
- 私有任务:在内部使用,通常作为 series() 或 parallel() 组合的组成部分。
一个私有类型的任务在外观和行为上和其他任务是一样的,但是不能够被用户直接调用。如果需要将一个任务注册为公有类型的,只需要从 gulpfile.js 文件中将任务通过 export 导出即可。
如何导出任务
我们可以在 gulpfile.js 文件中,使用 export 命令导出任务,这样这个被导出的任务变为了一个公有任务(public task),可以被 gulp 命令直接调用。
示例:
看下面这个例子:
const { series } = require('gulp');
// clean函数并未被导出,因此clean是私有任务,可以被用在 series() 组合中
function clean(cb) {
cb();
}
// build 函数被导出了,因此它是一个公有任务,可以被 gulp 命令直接调用,它也可用在series()组合中
function build(cb) {
cb();
}
// 导出 build 函数
exports.build = build;
exports.default = series(clean, build);
执行 gulp --tasks 命令:
在以前的 gulp 版本中,task() 方法用来将函数注册为任务。虽然这个 API 依旧是可以使用的,但是导出将会是主要的注册机制,除非遇到 export 不起作用的情况。
组合任务
Gulp 提供了两个强大的组合方法: series() 和 parallel() 方法,这两个方法允许将多个独立的任务组合为一个更大的操作。这两个方法都可以接受任意数目的任务(task)函数或已经组合的操作。series() 和 parallel() 方法可以互相嵌套至任意深度。
如果需要让任务按顺序执行,可以使用 series() 方法。
示例:
const { series } = require('gulp');
function one(cb) {
console.log("one")
cb();
}
function two(cb) {
console.log("two")
cb();
}
exports.build = series(one, two);
执行 gulp build 命令:
可以看到图片中,按照任务的执行完毕的先后顺序为 one > two > build 。
如果希望以最大并发来运行的任务,可以使用 parallel() 方法将它们组合起来:
const { parallel } = require('gulp');
function one(cb) {
console.log("one")
cb();
}
function two(cb) {
console.log("two")
cb();
}
exports.build = parallel(one, two);
当 series() 或 parallel() 被调用时,任务被立即组合在一起。这就允许在组合中进行改变,而不需要在单个任务中进行条件判断。
示例:
const { series } = require('gulp');
function one(cb) {
cb();
}
function two(cb) {
cb();
}
function three(cb) {
cb();
}
if (process.env.NODE_ENV === 'production') {
exports.build = series(two, one);
} else {
exports.build = series(two, three);
}
上述代码中表示如果在生产环境下执行,则运行 exports.build = series(two, one),否则运行 exports.build = series(two, three),我们看一下执行结果:
series() 和 parallel() 可以被嵌套到任意深度:
const { series, parallel } = require('gulp');
function one(cb) {
cb();
}
function two(cb) {
cb();
}
function three(cb) {
cb();
}
function four(cb) {
cb();
}
function five(cb) {
cb();
}
exports.build = series(
one,
parallel(
two,
series(three, four)
),
five
);
执行命令:
猜你喜欢
- 2024-10-17 word转pdf免费网站 word转化pdf免费
- 2024-10-17 Linux知识点之变量与环境变量 linux环境变量生效顺序
- 2024-10-17 JS module的导出和导入的实现代码
- 2024-10-17 Linux下的文件操作和系统交互 linux与linux之间文件传输
- 2024-10-17 linux source命令是干啥的? linux source命令作用
- 2024-10-17 oracle逻辑备份与恢复|常用导出导入命令介绍
- 2024-10-17 快来看看这些shell基础知识你知道几个
- 2024-10-17 Linux怎么设置环境变量 linux设置环境变量ld_library_path
- 2024-10-17 Linux 系统中PATH一个示例 linux的path
- 2024-10-17 Python Anaconda导出(export)环境到environment.yml文件
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- mysql教程 (60)
- pythonif (68)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)