-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.babel.js
79 lines (73 loc) · 2.29 KB
/
gulpfile.babel.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import gulp from 'gulp';
// defining main paths for .sass/.js/.html etc files
const paths = {
css: 'assets/css/*.sass',
cssMin: 'assets/css/min',
js: 'assets/js/common.js',
jsMain: 'assets/js/modules/*.js',
jsMin: 'assets/js/min',
img: 'assets/img/**',
imgMin: 'assets/img/min/',
clean: '_site',
site: '_site/index.html',
md: 'README.md'
}
// write lazyRequireTask function to have all tasks in seperate files
// arguments - name of task, path to the task file, path to the folder, where task should be executed
let lazyRequireTask = (taskName, path, options = {}) => {
options.taskName = taskName;
path = `./gulp/${path}`;
gulp.task(taskName, callback => {
let task = require(path).call(this, options);
return task(callback);
});
};
// Requiring tasks on development stage(CSS,JS,IMG)
lazyRequireTask('assets:css', 'css', {
src: paths.css,
dest: paths.cssMin
});
lazyRequireTask('assets:js', 'js', {
src: paths.js,
dest: paths.jsMin
});
lazyRequireTask('assets:img', 'img', {
src: paths.img,
dest: paths.imgMin
});
// Requiring tasks on production stage(CSS,JS,IMG,DOCS,HTML)
lazyRequireTask('deploy:css', 'deploy/css', {
src: paths.css,
dest: paths.cssMin
});
lazyRequireTask('deploy:js', 'deploy/js', {
src: paths.js,
dest: paths.jsMin
});
lazyRequireTask('deploy:img', 'deploy/img', {
src: paths.img,
dest: paths.imgMin
});
lazyRequireTask('deploy:docs', 'deploy/docs', {
src: [paths.md, paths.jsMain]
});
lazyRequireTask('deploy:html', 'deploy/html', {
src: paths.site,
dest: paths.clean
});
// Others tasks
// task to prevent caching(will remove _site folder where website is stored)
lazyRequireTask('clean', 'clean', {
src: paths.clean
});
// Syncing and reloading browser
lazyRequireTask('browser:sync', 'sync');
lazyRequireTask('browser:build', 'build');
// defining tasks to run parallel
const browser = gulp.parallel('browser:sync', 'browser:build');
const assets = gulp.parallel('assets:css', 'assets:js', 'assets:img');
const clean = gulp.parallel('clean');
const build = gulp.series(clean, gulp.parallel(browser, assets));
const deploy = gulp.parallel('browser:sync', 'browser:build', 'deploy:css', 'deploy:js', 'deploy:img', 'deploy:html', 'deploy:docs');
export { build, clean, assets, browser, deploy };
export default build;