| 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 |