Fixed gulpfile for version 4

Signed-off-by: Jim Martens <github@2martens.de>
This commit is contained in:
2019-02-26 22:37:51 +01:00
parent 41d8d6676f
commit ddb494922b

View File

@ -2,21 +2,21 @@
// Define variables. // Define variables.
const autoprefixer = require("autoprefixer"); const autoprefixer = require("autoprefixer");
const browserSync = require("browser-sync").create(); const browserSync = require("browser-sync").create();
const cleancss = require("gulp-clean-css"); const cleancss = require("gulp-clean-css");
const concat = require("gulp-concat"); const concat = require("gulp-concat");
const del = require("del"); const del = require("del");
const gulp = require("gulp"); const gulp = require("gulp");
const gutil = require("gulp-util"); const gutil = require("gulp-util");
const imagemin = require("gulp-imagemin"); const imagemin = require("gulp-imagemin");
const notify = require("gulp-notify"); const notify = require("gulp-notify");
const postcss = require("gulp-postcss"); const postcss = require("gulp-postcss");
const rename = require("gulp-rename"); const rename = require("gulp-rename");
const run = require("gulp-run"); const run = require("gulp-run");
const runSequence = require("run-sequence"); const runSequence = require("run-sequence");
const sass = require("gulp-ruby-sass"); const sass = require("gulp-ruby-sass");
const sprockets = require("gulp-sprockets"); const sprockets = require("gulp-sprockets");
const uglify = require("gulp-uglify"); const uglify = require("gulp-uglify");
// Include paths file. // Include paths file.
const paths = require("./_assets/gulp_config/paths"); const paths = require("./_assets/gulp_config/paths");
@ -25,12 +25,12 @@ sprockets.default.declare(paths.sprocketsDirs, paths.siteJsFiles);
// Uses Sass compiler to process styles, adds vendor prefixes, minifies, then // Uses Sass compiler to process styles, adds vendor prefixes, minifies, then
// outputs file to the appropriate location. // outputs file to the appropriate location.
gulp.task("build:styles:main", function() { gulp.task("build:styles:main", function () {
return sass(paths.sassFiles + "/main.scss", { return sass(paths.sassFiles + "/main.scss", {
style: "compressed", style: "compressed",
trace: true, trace: true,
loadPath: [paths.sassFiles] loadPath: [paths.sassFiles]
}).pipe(postcss([ autoprefixer({ browsers: ["last 2 versions"] }) ])) }).pipe(postcss([autoprefixer({browsers: ["last 2 versions"]})]))
.pipe(cleancss()) .pipe(cleancss())
.pipe(gulp.dest(paths.jekyllCssFiles)) .pipe(gulp.dest(paths.jekyllCssFiles))
.pipe(gulp.dest(paths.siteCssFiles)) .pipe(gulp.dest(paths.siteCssFiles))
@ -39,21 +39,21 @@ gulp.task("build:styles:main", function() {
}); });
// Processes critical CSS, to be included in head.html. // Processes critical CSS, to be included in head.html.
gulp.task("build:styles:critical", function() { gulp.task("build:styles:critical", function () {
return sass(paths.sassFiles + "/critical.scss", { return sass(paths.sassFiles + "/critical.scss", {
style: "compressed", style: "compressed",
trace: true, trace: true,
loadPath: [paths.sassFiles] loadPath: [paths.sassFiles]
}).pipe(postcss([ autoprefixer({ browsers: ["last 2 versions"] }) ])) }).pipe(postcss([autoprefixer({browsers: ["last 2 versions"]})]))
.pipe(cleancss()) .pipe(cleancss())
.pipe(gulp.dest("_includes")) .pipe(gulp.dest("_includes"))
.on("error", gutil.log); .on("error", gutil.log);
}); });
// Builds all styles. // Builds all styles.
gulp.task("build:styles", ["build:styles:main", "build:styles:critical"]); gulp.task("build:styles", gulp.series("build:styles:main", "build:styles:critical"));
gulp.task("clean:styles", function(callback) { gulp.task("clean:styles", function (callback) {
del([paths.jekyllCssFiles + "main.css", del([paths.jekyllCssFiles + "main.css",
paths.siteCssFiles + "main.css", paths.siteCssFiles + "main.css",
"_includes/critical.css" "_includes/critical.css"
@ -63,7 +63,7 @@ gulp.task("clean:styles", function(callback) {
// Concatenates and uglifies global JS files and outputs result to the // Concatenates and uglifies global JS files and outputs result to the
// appropriate location. // appropriate location.
gulp.task("build:scripts:global", function() { gulp.task("build:scripts:global", function () {
return gulp.src([ return gulp.src([
paths.jsFiles + "/global/lib" + paths.jsPattern, paths.jsFiles + "/global/lib" + paths.jsPattern,
paths.jsFiles + "/global/*.js" paths.jsFiles + "/global/*.js"
@ -76,14 +76,14 @@ gulp.task("build:scripts:global", function() {
.on("error", gutil.log); .on("error", gutil.log);
}); });
gulp.task("clean:scripts", function(callback) { gulp.task("clean:scripts", function (callback) {
del([paths.jekyllJsFiles + "main.js", paths.siteJsFiles + "main.js"]); del([paths.jekyllJsFiles + "main.js", paths.siteJsFiles + "main.js"]);
callback(); callback();
}); });
// Concatenates and uglifies leaflet JS files and outputs result to the // Concatenates and uglifies leaflet JS files and outputs result to the
// appropriate location. // appropriate location.
gulp.task("build:scripts:leaflet", function() { gulp.task("build:scripts:leaflet", function () {
return gulp.src([ return gulp.src([
paths.jsFiles + "/leaflet/leaflet.js", paths.jsFiles + "/leaflet/leaflet.js",
paths.jsFiles + "/leaflet/leaflet-providers.js" paths.jsFiles + "/leaflet/leaflet-providers.js"
@ -95,16 +95,16 @@ gulp.task("build:scripts:leaflet", function() {
.on("error", gutil.log); .on("error", gutil.log);
}); });
gulp.task("clean:scripts:leaflet", function(callback) { gulp.task("clean:scripts:leaflet", function (callback) {
del([paths.jekyllJsFiles + "leaflet.js", paths.siteJsFiles + "leaflet.js"]); del([paths.jekyllJsFiles + "leaflet.js", paths.siteJsFiles + "leaflet.js"]);
callback(); callback();
}); });
// Builds all scripts. // Builds all scripts.
gulp.task("build:scripts", ["build:scripts:global", "build:scripts:leaflet"]); gulp.task("build:scripts", gulp.series("build:scripts:global", "build:scripts:leaflet"));
// Optimizes and copies image files. // Optimizes and copies image files.
gulp.task("build:images", function() { gulp.task("build:images", function () {
return gulp.src(paths.imageFilesGlob) return gulp.src(paths.imageFilesGlob)
.pipe(imagemin()) .pipe(imagemin())
.pipe(gulp.dest(paths.jekyllImageFiles)) .pipe(gulp.dest(paths.jekyllImageFiles))
@ -112,13 +112,13 @@ gulp.task("build:images", function() {
.pipe(browserSync.stream()); .pipe(browserSync.stream());
}); });
gulp.task("clean:images", function(callback) { gulp.task("clean:images", function (callback) {
del([paths.jekyllImageFiles, paths.siteImageFiles]); del([paths.jekyllImageFiles, paths.siteImageFiles]);
callback(); callback();
}); });
// Runs jekyll build command. // Runs jekyll build command.
gulp.task("build:jekyll", function() { gulp.task("build:jekyll", function () {
var shellCommand = "bundle exec jekyll build --config _config.yml"; var shellCommand = "bundle exec jekyll build --config _config.yml";
return gulp.src("") return gulp.src("")
@ -127,7 +127,7 @@ gulp.task("build:jekyll", function() {
}); });
// Runs jekyll build command using test config. // Runs jekyll build command using test config.
gulp.task("build:jekyll:test", function() { gulp.task("build:jekyll:test", function () {
var shellCommand = "bundle exec jekyll build --config _config.yml,_config.test.yml"; var shellCommand = "bundle exec jekyll build --config _config.yml,_config.test.yml";
return gulp.src("") return gulp.src("")
@ -136,7 +136,7 @@ gulp.task("build:jekyll:test", function() {
}); });
// Runs jekyll build command using local config. // Runs jekyll build command using local config.
gulp.task("build:jekyll:local", function() { gulp.task("build:jekyll:local", function () {
var shellCommand = "bundle exec jekyll build --config _config.yml,_config.test.yml,_config.dev.yml"; var shellCommand = "bundle exec jekyll build --config _config.yml,_config.test.yml,_config.dev.yml";
return gulp.src("") return gulp.src("")
@ -145,58 +145,58 @@ gulp.task("build:jekyll:local", function() {
}); });
// Deletes the entire _site directory. // Deletes the entire _site directory.
gulp.task("clean:jekyll", function(callback) { gulp.task("clean:jekyll", function (callback) {
del(["_site"]); del(["_site"]);
callback(); callback();
}); });
gulp.task("clean", ["clean:jekyll", gulp.task("clean", gulp.series("clean:jekyll",
"clean:images", "clean:images",
"clean:scripts", "clean:scripts",
"clean:styles"]); "clean:styles"));
// Builds site anew. // Builds site anew.
gulp.task("build", function(callback) { gulp.task("build", function (callback) {
runSequence("clean", gulp.series("clean",
["build:scripts", "build:images", "build:styles"], gulp.series("build:scripts", "build:images", "build:styles"),
"build:jekyll", "build:jekyll");
callback); callback();
}); });
// Builds site anew using test config. // Builds site anew using test config.
gulp.task("build:test", function(callback) { gulp.task("build:test", function (callback) {
runSequence("clean", gulp.series("clean",
["build:scripts", "build:images", "build:styles"], gulp.series("build:scripts", "build:images", "build:styles"),
"build:jekyll:test", "build:jekyll:test");
callback); callback();
}); });
// Builds site anew using local config. // Builds site anew using local config.
gulp.task("build:local", function(callback) { gulp.task("build:local", function (callback) {
runSequence("clean", gulp.series("clean",
["build:scripts", "build:images", "build:styles"], gulp.series("build:scripts", "build:images", "build:styles"),
"build:jekyll:local", "build:jekyll:local");
callback); callback();
}); });
// Default Task: builds site. // Default Task: builds site.
gulp.task("default", ["build"]); gulp.task("default", gulp.series("build"));
// Special tasks for building and then reloading BrowserSync. // Special tasks for building and then reloading BrowserSync.
gulp.task("build:jekyll:watch", ["build:jekyll:local"], function(callback) { gulp.task("build:jekyll:watch", gulp.series("build:jekyll:local", function (callback) {
browserSync.reload(); browserSync.reload();
callback(); callback();
}); }));
gulp.task("build:scripts:watch", ["build:scripts"], function(callback) { gulp.task("build:scripts:watch", gulp.series("build:scripts", function (callback) {
browserSync.reload(); browserSync.reload();
callback(); callback();
}); }));
// Static Server + watching files. // Static Server + watching files.
// Note: passing anything besides hard-coded literal paths with globs doesn't // Note: passing anything besides hard-coded literal paths with globs doesn't
// seem to work with gulp.watch(). // seem to work with gulp.watch().
gulp.task("serve", ["build:local"], function() { gulp.task("serve", gulp.series("build:local", function () {
browserSync.init({ browserSync.init({
server: paths.siteDir, server: paths.siteDir,
@ -207,43 +207,43 @@ gulp.task("serve", ["build:local"], function() {
}); });
// Watch site settings. // Watch site settings.
gulp.watch(["_config.yml"], ["build:jekyll:watch"]); gulp.watch(["_config.yml"], gulp.series("build:jekyll:watch"));
// Watch .scss files; changes are piped to browserSync. // Watch .scss files; changes are piped to browserSync.
gulp.watch("_assets/styles/**/*.scss", ["build:styles"]); gulp.watch("_assets/styles/**/*.scss", gulp.series("build:styles"));
// Watch .js files. // Watch .js files.
gulp.watch("_assets/js/**/*.js", ["build:scripts:watch"]); gulp.watch("_assets/js/**/*.js", gulp.series("build:scripts:watch"));
// Watch image files; changes are piped to browserSync. // Watch image files; changes are piped to browserSync.
gulp.watch("_assets/img/**/*", ["build:images"]); gulp.watch("_assets/img/**/*", gulp.series("build:images"));
// Watch posts. // Watch posts.
gulp.watch("_posts/**/*.+(md|markdown|MD)", ["build:jekyll:watch"]); gulp.watch("_posts/**/*.+(md|markdown|MD)", gulp.series("build:jekyll:watch"));
// Watch drafts if --drafts flag was passed. // Watch drafts if --drafts flag was passed.
if (module.exports.drafts) { if (module.exports.drafts) {
gulp.watch("_drafts/*.+(md|markdown|MD)", ["build:jekyll:watch"]); gulp.watch("_drafts/*.+(md|markdown|MD)", gulp.series("build:jekyll:watch"));
} }
// Watch html and markdown files. // Watch html and markdown files.
gulp.watch(["**/*.+(html|md|markdown|MD)", "!_site/**/*.*"], ["build:jekyll:watch"]); gulp.watch(["**/*.+(html|md|markdown|MD)", "!_site/**/*.*"], gulp.series("build:jekyll:watch"));
// Watch RSS feed XML files. // Watch RSS feed XML files.
gulp.watch("**.xml", ["build:jekyll:watch"]); gulp.watch("**.xml", gulp.series("build:jekyll:watch"));
// Watch data files. // Watch data files.
gulp.watch("_data/**.*+(yml|yaml|csv|json)", ["build:jekyll:watch"]); gulp.watch("_data/**.*+(yml|yaml|csv|json)", gulp.series("build:jekyll:watch"));
// Watch favicon.png. // Watch favicon.png.
gulp.watch("favicon.png", ["build:jekyll:watch"]); gulp.watch("favicon.png", gulp.series("build:jekyll:watch"));
}); }));
// Updates Ruby gems // Updates Ruby gems
gulp.task("update:bundle", function() { gulp.task("update:bundle", function () {
return gulp.src("") return gulp.src("")
.pipe(run("bundle install")) .pipe(run("bundle install"))
.pipe(run("bundle update")) .pipe(run("bundle update"))
.pipe(notify({ message: "Bundle Update Complete" })) .pipe(notify({message: "Bundle Update Complete"}))
.on("error", gutil.log); .on("error", gutil.log);
}); });