gulp-chef重复使用 gulp 任务
支援 Gulp 4.0,允许嵌套配置任务及组态。以优雅、直觉的方式,重复使用 gulp 任务。
编码的时候你遵守 DRY 原则,那编写 gulpfile.js 的时候,为什么不呢?
功能
支援 Gulp 4.0,
自动载入本地 recipe,
支援透过 npm 安装 plugin,
支援嵌套任务并且允许子任务继承组态配置,
支援向前、向后参照任务,
透过组态配置即可处理串流:譬如 merge, queue, 或者 concat,
透过组态配置即可控制子任务的执行: parallel 或者 series,
支援条件式组态配置,
支援命令行指令,查询可用的 recpies 及使用方式,以及
支援命令行指令,查询可用的任务说明及其组态配置。
问与答
问: gulp-chef 违反了 gulp 的『编码优于组态配置 (preferring code over configuration)』哲学吗?
答: 没有, 你还是像平常一样编码, 并且将可变动部份以组态配置的形式萃取出来。
Gulp-chef 透过简化以下的工作来提高使用弹性:
分割任务到不同的档案,以及
问: 有其它类似的替代方案吗?
答: 有,像 gulp-cozy, gulp-starter , elixir, 还有更多其他方案。
问: 那么,跟其它方案比起来,gulp-chef 的优势何在?
答:
Gulp-chef 不是侵入式的。它不强迫也不限定你使用它的 API 来撰写通用任务 (recipe)。
Gulp-chef 强大且易用。它提供了最佳实务作法,如:合并串流、序列串流等。这表示,你可以让任务『只做一件事并做好(do one thing and do it well)]』,然后使用组态配置来组合任务。
Gulp-chef 本身以及共享任务 (plugin) 都是标准的 node 模组。你可以透过 npm 安装并管理依赖关系,不再需要手动复制工具程式库或任务程式码,不再需要再担心忘记更新某个专案的任务,或者担心专案之间的任务版本因各自修改而导致不一致的状况。
Gulp-chef 提供极大的弹性,让你依喜好方式决定如何使用它: 『最精简(minimal)』 或『最全面(maximal)』,随你选择。
gulpfile.js 范例
var gulp = require('gulp'); var chef = require('gulp-chef'); var ingredients = { src: 'src/', dest: 'dist/', clean: {}, make: { styles: { recipe: 'copy', src: '**/*.js' }, browserify: { bundle: { entry: 'main.js' } } }, build: ['clean', 'make'], default: 'build' }; var meals = chef(ingredients); gulp.registry(meals);