This repository was archived by the owner on Jun 4, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGulpfile.js
99 lines (82 loc) · 2.38 KB
/
Gulpfile.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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
"use strict";
const gulp = require("gulp");
const del = require("del");
const webpack = require("webpack-stream");
const runSequence = require("run-sequence");
const gutil = require("gulp-util");
const path = require("path");
const sass = require("gulp-sass");
const plumber = require('gulp-plumber');
const concatCSS = require("gulp-concat-css");
// sass libraries
const neat = require("node-neat").includePaths;
const DIST_DIR = "./client/dist";
const SRC_DIR = "./client/src";
function errorHandler() {
return plumber(function(error) {
gutil.log(error.message);
this.emit("end");
});
}
/* ========== GLOBAL ===========*/
gulp.task("clean", () => {
return del([`${DIST_DIR}/**/*`]);
});
gulp.task("copy-images", () => {
return gulp.src(`${SRC_DIR}/images/**/*`)
.pipe(gulp.dest(`${DIST_DIR}/images/`));
});
gulp.task("sass", () => {
return gulp.src(`${SRC_DIR}/app/**/*.scss`)
.pipe(errorHandler())
.pipe(sass({
outputStyle: "compressed",
includePaths: [`${SRC_DIR}/sass/`, ...neat]
}).on("error", sass.logError))
.pipe(concatCSS("app.min.css"))
.pipe(gulp.dest(`${DIST_DIR}/css`));
});
const eslint = require("gulp-eslint");
gulp.task("eslint", () => {
return gulp.src([`${SRC_DIR}/app/**/*.js`])
.pipe(eslint())
.pipe(eslint.format())
.pipe(eslint.failAfterError());
});
/* ========== DEVELOPMENT ===========*/
gulp.task("webpack:dev", ["eslint"], () => {
return gulp.src(`${SRC_DIR}/app/app.js`)
.pipe(errorHandler())
.pipe(webpack(require("./webpack.config.js")))
.pipe(gulp.dest(`${DIST_DIR}/app`));
});
gulp.task("build:dev", callback => {
runSequence(
"clean",
"copy-images",
["webpack:dev", "sass"],
callback
);
});
gulp.task("watch", ["build:dev"], () => {
const fileChanged = file => {
let filePath = path.relative(__dirname, file.path);
};
gulp.watch([`${SRC_DIR}/app/**/*.js`], ["webpack:dev"]).on("change", fileChanged);
gulp.watch([`${SRC_DIR}/**/*.scss`], ["sass"]).on("change", fileChanged);
});
/* ========== PRODUCTION ===========*/
gulp.task("webpack:prod", [], () => {
return gulp.src(`${SRC_DIR}/app/app.js`)
.pipe(webpack(require("./webpack.config.js")))
.pipe(gulp.dest(`${DIST_DIR}/app`));
});
gulp.task("build:prod", callback => {
runSequence(
"clean",
"copy-images",
["webpack:prod", "sass"],
callback
);
});
gulp.task("default", ["build:dev"]);