-
Notifications
You must be signed in to change notification settings - Fork 1
/
gulpfile.js
108 lines (96 loc) · 2.35 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
100
101
102
103
104
105
106
107
108
const gulp = require("gulp");
const sass = require("gulp-sass");
const clean = require("gulp-clean");
const hash = require("gulp-hash");
const nodeSass = require("node-sass");
const pug = require("gulp-pug");
const cleanCSS = require("gulp-clean-css");
const team = require("./src/content/team");
const isProduction = process.env.NODE_ENV === "production";
const srcDir = "./src";
const distDir = "./dist/srijan/2018";
const paths = {
sass: {
src: `${srcDir}/sass/**/*.sass`,
dest: `${distDir}/assets/css`
},
pug: {
src: [`${srcDir}/content/**/*.pug`, `!${srcDir}/content/**/_*.pug`],
dest: `${distDir}`
},
assetManifest: `${srcDir}/assets.json`
};
const assetBasePath = isProduction ? "/srijan/2018/assets" : "/assets";
const options = {
sass: {
outputStyle: "compressed",
functions: {
"mapImg($img)": function _mapImg(img) {
const p = `${assetBasePath}${img.getValue()}`;
return new nodeSass.types.String(p);
}
}
},
hash: {
hash: {
hashLength: 7
},
css: {
deleteOld: true,
sourceDir: paths.sass.dest
}
},
pug: {
locals: {
stylesheet: () => {
const assetManifest = require(paths.assetManifest);
const fileName = isProduction
? assetManifest["style.css"]
: "style.css";
return `${assetBasePath}/css/${fileName}`;
},
team
}
}
};
const cleanDist = () =>
gulp
.src(distDir, {
read: false
})
.pipe(clean());
const styles = () => {
if (isProduction) {
return gulp
.src(paths.sass.src)
.pipe(sass(options.sass).on("error", sass.logError))
.pipe(hash(options.hash.hash))
.pipe(cleanCSS())
.pipe(gulp.dest(paths.sass.dest))
.pipe(hash.manifest(paths.assetManifest, options.hash.css))
.pipe(gulp.dest("."));
}
return gulp
.src(paths.sass.src)
.pipe(sass(options.sass).on("error", sass.logError))
.pipe(gulp.dest(paths.sass.dest));
};
const content = () => {
return gulp
.src(paths.pug.src)
.pipe(pug(options.pug))
.pipe(gulp.dest(paths.pug.dest));
};
const build = gulp.series(styles, content);
const watch = () => {
gulp.watch(paths.sass.src, styles);
gulp.watch(paths.pug.src[0], content);
};
module.exports = {
default: build,
clean: cleanDist,
build,
styles,
content,
watch: gulp.series(build, watch)
};