UNPKG

2.68 kBJavaScriptView Raw
1const { resolve } = require('path');
2
3const gulpHelp = require('gulp-help');
4const gulpLoadPlugins = require('gulp-load-plugins');
5const runSequence1 = require('run-sequence');
6const { defaultsDeep } = require('lodash');
7
8const defaults = require('./defaults');
9
10const { cleanDirectory } = require('./lib/clean');
11const { compileBabel } = require('./lib/babel');
12const { compileBrowserify, watchBrowserify } = require('./lib/browserify');
13const { compileCopy } = require('./lib/copy');
14const { compileImages } = require('./lib/images');
15const { compileLess } = require('./lib/less');
16const { runLiveServer } = require('./lib/live-server');
17const { runServer } = require('./lib/server');
18const { runTests, watchTests } = require('./lib/tests');
19const { watchCompilers } = require('./lib/watch');
20
21// TODO: Have a different solution for the underscore variables.
22module.exports = function start(_gulp, _options = {}) {
23 const gulp = gulpHelp(_gulp);
24 const plugins = gulpLoadPlugins({
25 lazy: false,
26 config: resolve(`${__dirname}/../package.json`)
27 });
28
29 const options = defaultsDeep(_options, defaults);
30
31 function wrap(fn) {
32 return fn(gulp, plugins, options);
33 }
34
35 gulp.task('cleanDirectory', wrap(cleanDirectory));
36 gulp.task('compileBabel', wrap(compileBabel));
37 gulp.task('compileBrowserify', wrap(compileBrowserify));
38 gulp.task('compileCopy', wrap(compileCopy));
39 gulp.task('compileImages', wrap(compileImages));
40 gulp.task('compileLess', wrap(compileLess));
41 gulp.task('runLiveServer', wrap(runLiveServer));
42 gulp.task('runServer', wrap(runServer));
43 gulp.task('runTests', wrap(runTests));
44 gulp.task('watchBrowserify', wrap(watchBrowserify));
45 gulp.task('watchCompilers', wrap(watchCompilers));
46 gulp.task('watchTests', wrap(watchTests));
47
48 gulp.task('develop', wrap((gulp, plugin, options) => {
49 const runSequence = runSequence1.use(gulp);
50
51 return cb => {
52 runSequence(
53 'cleanDirectory',
54
55 [
56 'compileBabel',
57 'compileCopy',
58 'compileImages',
59 'compileLess'
60 ],
61
62 'compileBrowserify',
63 'runTests',
64
65 [
66 'runServer',
67 'runLiveServer',
68 'watchBrowserify',
69 'watchTests',
70 'watchCompilers'
71 ]
72 );
73 };
74 }));
75
76 gulp.task('compile', wrap((gulp, plugin, options) => {
77 const runSequence = runSequence1.use(gulp);
78
79 return cb => {
80 runSequence(
81 'cleanDirectory',
82
83 [
84 'compileBabel',
85 'compileCopy',
86 'compileImages',
87 'compileLess'
88 ],
89
90 'compileBrowserify'
91 );
92 };
93 }));
94
95 gulp.task('default', [ 'compile' ]);
96};