gulp-chef - 重复使用 gulp 任务


MIT
跨平台
JavaScript

软件简介

支援 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);