UNPKG

2.2 kBJavaScriptView Raw
1'use strict';
2
3/**
4 * Module dependencies.
5 */
6
7var through = require('through2');
8var sessionify = require('sessionify');
9var drafts = require('gulp-drafts');
10var es = require('event-stream');
11var vfs = require('vinyl-fs');
12var _ = require('lodash');
13
14/**
15 * Local dependencies
16 */
17
18var plugins = require('./plugins');
19var session = require('./session');
20
21/**
22 * Default `src` plugins to run.
23 *
24 * To disable a plugin:
25 *
26 * ```js
27 * app.disable('src:foo plugin');
28 * ```
29 */
30
31exports.src = function(app, glob, opts) {
32 opts = _.merge({}, app.options, opts);
33 session.set('src', opts);
34
35 return createStack(app, {
36 'src:vfs': vfs.src(glob, opts),
37 'src:init': plugins.init.call(app, opts),
38 'src:conflicts': plugins.conflicts.call(app, opts),
39 'src:drafts': drafts.call(app, opts)
40 });
41};
42
43/**
44 * Default `dest` plugins to run.
45 *
46 * To disable a plugin:
47 *
48 * ```js
49 * app.disable('dest:bar plugin');
50 * ```
51 */
52
53exports.dest = function (app, dest, opts) {
54 var srcOpts = session.get('src') || {};
55 opts = _.merge({}, app.options, srcOpts, opts);
56
57 return createStack(app, {
58 'dest:paths': plugins.dest.call(app, dest, opts, opts.locals),
59 'dest:render': plugins.render.call(app, opts, opts.locals),
60 'dest:reflinks': plugins.reflinks.call(app, opts, opts.locals),
61 'dest:comments': plugins.comments.call(app),
62 'dest:format': plugins.format.call(app, opts, opts.locals),
63 'dest:vfs': vfs.dest(dest, opts)
64 });
65};
66
67/**
68 * Create the default plugin stack based on user settings.
69 *
70 * Disable a plugin by passing the name of the plugin + ` plugin`
71 * to `app.disable()`,
72 *
73 * **Example:**
74 *
75 * ```js
76 * app.disable('src:foo plugin');
77 * app.disable('src:bar plugin');
78 * ```
79 */
80
81function createStack(app, plugins) {
82 if (app.enabled('minimal config')) {
83 var res = es.pipe.apply(es, []);
84 return sessionify(res, session, app);
85 }
86 function enabled(acc, plugin, name) {
87 if (plugin == null) {
88 acc.push(through.obj());
89 }
90 if (app.enabled(name + ' plugin')) {
91 acc.push(plugin);
92 }
93 return acc;
94 }
95 var arr = _.reduce(plugins, enabled, []);
96 var result = es.pipe.apply(es, arr);
97 return sessionify(result, session, app);
98}