Left: | ||
Right: |
OLD | NEW |
---|---|
(Empty) | |
1 /*! | |
2 * This file is part of eyeomail.com. | |
3 * Copyright (C) 2017-present eyeo GmbH | |
4 * | |
5 * eyeomail.com is free software: you can redistribute it and/or modify | |
6 * it under the terms of the GNU General Public License as published by | |
7 * the Free Software Foundation, either version 3 of the License, or | |
8 * (at your option) any later version. | |
9 * | |
10 * eyeomail.com is distributed in the hope that it will be useful, | |
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 * GNU General Public License for more details. | |
14 * | |
15 * You should have received a copy of the GNU General Public License | |
16 * along with eyeomail.com. If not, see <http://www.gnu.org/licenses/>. | |
17 */ | |
18 | |
19 const gulp = require("gulp"); | |
20 const gutil = require("gulp-util"); | |
21 const rename = require("gulp-rename"); | |
22 const sass = require("gulp-sass"); | |
23 const postcss = require("gulp-postcss"); | |
24 const scss = require("postcss-scss"); | |
25 const autoprefixer = require("autoprefixer"); | |
26 const replace = require("replace"); | |
27 const fs = require("fs"); | |
28 const readFilePromise = require("fs-readfile-promise"); | |
29 | |
30 /****************************************************************************** | |
31 * CSS | |
32 ******************************************************************************/ | |
33 | |
34 gulp.task("compileCss", function() { | |
35 return gulp.src("./src/scss/main.scss") | |
36 .pipe(postcss([autoprefixer()], {syntax: scss}).on("error", gutil.log)) | |
37 .pipe(sass({outputStyle: "compact"}).on("error", gutil.log)) | |
38 .pipe(gulp.dest("./dist")); | |
39 }); | |
40 | |
41 gulp.task("inlineCss", ["compileCss", "templates"], function() { | |
42 return fs.readFile("./dist/main.css", "utf8", function (err, styles) { | |
43 if (err) throw err; | |
44 | |
45 const replacement = `<!-- styles:start --> | |
juliandoucette
2018/01/22 19:47:52
NIT: (Bringing up an old point, I know)
I underst
ire
2018/01/23 08:48:08
The reason I replaced the comments as well was bec
juliandoucette
2018/01/23 17:00:45
I wasn't able to find a simple regex solution. My
| |
46 <style> | |
47 ${styles} | |
48 </style> | |
49 <!-- styles:end -->`; | |
50 | |
51 replace({ | |
52 regex: /<!-- styles:start -->([\s\S]*?)<!-- styles:end -->/, | |
53 replacement: replacement, | |
54 paths: ["dist/signup.html"], | |
55 recursive: true, | |
56 silent: true, | |
57 }); | |
58 }); | |
59 }); | |
60 | |
61 gulp.task("css", ["inlineCss"]); | |
62 | |
63 /****************************************************************************** | |
64 * Template | |
65 ******************************************************************************/ | |
66 | |
67 gulp.task("templates", function() { | |
juliandoucette
2018/01/22 19:47:52
NIT: This task name is inconsistent with the ones
ire
2018/01/23 08:48:09
Done.
| |
68 const templateFiles = ["./src/templates/signup.html", | |
69 "./src/templates/confirm-email.html", | |
70 "./src/templates/subscription-confirmed-email.html"]; | |
71 | |
72 return gulp.src(templateFiles).pipe(gulp.dest("./dist")); | |
73 }); | |
74 | |
75 gulp.task("backclick", function() { | |
76 const templateFiles = ["./dist/signup.html", | |
77 "./dist/confirm-email.html", | |
78 "./dist/subscription-confirmed-email.html"]; | |
79 | |
80 return Promise.all(templateFiles.map((file) => readFilePromise(file))) | |
81 .then((buffers) => Promise.all(buffers.map((buffer) => buffer.toString()))) | |
82 .then((contents) => { | |
83 fs.mkdir("./dist", () => { | |
juliandoucette
2018/01/22 19:47:51
NIT: mkdir implies that a dir doesn't exist alread
ire
2018/01/23 08:48:08
The `mkdir` is actually not needed as the backclic
| |
84 fs.writeFile("./dist/backclick.html", contents.join("")); | |
juliandoucette
2018/01/22 19:47:51
NIT: A similar issue to the one above applies here
ire
2018/01/23 08:48:08
From my understanding fs.writeFile can be used to
juliandoucette
2018/01/23 17:00:45
Acknowledged.
| |
85 }) | |
86 }); | |
87 }); | |
88 | |
89 gulp.task("template", ["css"]); | |
90 | |
91 /****************************************************************************** | |
92 * Watch | |
93 ******************************************************************************/ | |
94 | |
95 gulp.task("watch", function() { | |
96 gulp.watch("./src/scss/**/*.scss", ["css"]); | |
97 gulp.watch("./src/templates/*.html", ["template", "backclick"]); | |
98 }); | |
99 | |
100 /****************************************************************************** | |
101 * Default | |
102 ******************************************************************************/ | |
103 | |
104 gulp.task("default", ["template", "css", "watch"]); | |
OLD | NEW |