refactor: cleanup and restructure gulp tasks (#32)
This commit is contained in:
parent
b9d616e975
commit
5cb5dc0833
|
@ -10,11 +10,10 @@ exampleSite/public/
|
||||||
CHANGELOG.md
|
CHANGELOG.md
|
||||||
|
|
||||||
# auto-generated files
|
# auto-generated files
|
||||||
layouts/partials/icons-svg-symbols.html
|
layouts/partials/svg-icon-symbols.html
|
||||||
assets/*.css
|
static/*.min.css
|
||||||
static/*.css
|
static/*.min.css.map
|
||||||
!static/custom.css
|
static/js/
|
||||||
static/js/*.js
|
|
||||||
static/favicon/
|
static/favicon/
|
||||||
static/fonts/GeekblogIcons.*
|
static/fonts/GeekblogIcons.*
|
||||||
resources/
|
resources/
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
118
gulpfile.js
118
gulpfile.js
|
@ -1,36 +1,51 @@
|
||||||
|
const devBuild = !(
|
||||||
|
(process.env.NODE_ENV || "prod").trim().toLowerCase() === "prod"
|
||||||
|
);
|
||||||
|
|
||||||
const gulp = require("gulp");
|
const gulp = require("gulp");
|
||||||
const rename = require("gulp-rename");
|
const rename = require("gulp-rename");
|
||||||
const sass = require("gulp-sass");
|
const { sass } = require("@mr-hope/gulp-sass");
|
||||||
const cleanCSS = require("gulp-clean-css");
|
const cleanCSS = require("gulp-clean-css");
|
||||||
const autoprefixer = require("gulp-autoprefixer");
|
const autoprefixer = require("gulp-autoprefixer");
|
||||||
const iconfont = require("gulp-iconfont");
|
const iconfont = require("gulp-iconfont");
|
||||||
const clean = require("gulp-clean");
|
const uglify = require("gulp-uglify");
|
||||||
|
const sourcemaps = require("gulp-sourcemaps");
|
||||||
const realFavicon = require("gulp-real-favicon");
|
const realFavicon = require("gulp-real-favicon");
|
||||||
const path = require("path");
|
|
||||||
const fs = require("fs");
|
|
||||||
|
|
||||||
const svgSprite = require("gulp-svg-sprite");
|
const svgSprite = require("gulp-svg-sprite");
|
||||||
const rev = require("gulp-rev");
|
const rev = require("gulp-rev");
|
||||||
|
const replace = require("gulp-replace");
|
||||||
|
|
||||||
var CSSDEST = "assets/";
|
const path = require("path");
|
||||||
var FAVICON_DATA_FILE = "build/faviconData.json";
|
const fs = require("fs");
|
||||||
|
const del = require("del");
|
||||||
|
const through = require("through2");
|
||||||
|
|
||||||
|
var BUILD = "build";
|
||||||
|
var CSS_BUILD = BUILD + "/assets";
|
||||||
|
var JS_BUILD = BUILD + "/assets/js";
|
||||||
|
var FAVICON_DATA_FILE = BUILD + "/faviconData.json";
|
||||||
var TIMESTAMP = Math.round(Date.now() / 1000);
|
var TIMESTAMP = Math.round(Date.now() / 1000);
|
||||||
|
|
||||||
|
function noop() {
|
||||||
|
return through.obj();
|
||||||
|
}
|
||||||
|
|
||||||
gulp.task("sass", function () {
|
gulp.task("sass", function () {
|
||||||
return gulp
|
return gulp
|
||||||
.src("src/sass/{main,print,mobile}.scss")
|
.src("src/sass/{main,print,mobile}.scss")
|
||||||
.pipe(sass({ errLogToConsole: true }))
|
.pipe(devBuild ? sourcemaps.init() : noop())
|
||||||
|
.pipe(sass().on("error", sass.logError))
|
||||||
.pipe(cleanCSS({ format: "beautify" }))
|
.pipe(cleanCSS({ format: "beautify" }))
|
||||||
.pipe(
|
.pipe(
|
||||||
autoprefixer({
|
autoprefixer({
|
||||||
cascade: false,
|
cascade: false,
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
.pipe(gulp.dest(CSSDEST))
|
.pipe(gulp.dest(CSS_BUILD))
|
||||||
.pipe(cleanCSS())
|
.pipe(cleanCSS())
|
||||||
.pipe(rename({ extname: ".min.css" }))
|
.pipe(rename({ extname: ".min.css" }))
|
||||||
.pipe(gulp.dest(CSSDEST));
|
.pipe(devBuild ? sourcemaps.write(".") : noop())
|
||||||
|
.pipe(gulp.dest(CSS_BUILD));
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task("favicon-generate", function (done) {
|
gulp.task("favicon-generate", function (done) {
|
||||||
|
@ -122,12 +137,12 @@ gulp.task("svg-sprite", function () {
|
||||||
padding: 5,
|
padding: 5,
|
||||||
box: "content",
|
box: "content",
|
||||||
},
|
},
|
||||||
dest: "build/intermediate-svg",
|
dest: BUILD + "/intermediate-svg",
|
||||||
},
|
},
|
||||||
svg: {
|
svg: {
|
||||||
xmlDeclaration: false,
|
xmlDeclaration: false,
|
||||||
rootAttributes: {
|
rootAttributes: {
|
||||||
style: "position: absolute; width: 0; height: 0; overflow: hidden;",
|
class: "svg-sprite",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
mode: {
|
mode: {
|
||||||
|
@ -150,8 +165,7 @@ gulp.task("iconfont", function () {
|
||||||
var lastUnicode = 0xea01;
|
var lastUnicode = 0xea01;
|
||||||
var files = fs.readdirSync("src/iconfont");
|
var files = fs.readdirSync("src/iconfont");
|
||||||
|
|
||||||
// Filter files with containing unicode value
|
// Filter files with containing unicode value and set last unicode
|
||||||
// and set last unicode
|
|
||||||
files.forEach(function (file) {
|
files.forEach(function (file) {
|
||||||
var basename = path.basename(file);
|
var basename = path.basename(file);
|
||||||
var matches = basename.match(/^(?:((?:u[0-9a-f]{4,6},?)+)\-)?(.+)\.svg$/i);
|
var matches = basename.match(/^(?:((?:u[0-9a-f]{4,6},?)+)\-)?(.+)\.svg$/i);
|
||||||
|
@ -183,12 +197,32 @@ gulp.task("iconfont", function () {
|
||||||
.pipe(gulp.dest("static/fonts/"));
|
.pipe(gulp.dest("static/fonts/"));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
gulp.task("js", function () {
|
||||||
|
return gulp
|
||||||
|
.src(["src/js/*.js"])
|
||||||
|
.pipe(devBuild ? sourcemaps.init() : noop())
|
||||||
|
.pipe(uglify())
|
||||||
|
.pipe(rename({ extname: ".min.js" }))
|
||||||
|
.pipe(devBuild ? sourcemaps.write(".") : noop())
|
||||||
|
.pipe(gulp.dest(JS_BUILD));
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task("asset-sync", function () {
|
||||||
|
return gulp
|
||||||
|
.src([
|
||||||
|
"node_modules/clipboard/dist/clipboard.min.js",
|
||||||
|
"node_modules/flexsearch/dist/flexsearch.min.js",
|
||||||
|
"node_modules/mermaid/dist/mermaid.min.js",
|
||||||
|
])
|
||||||
|
.pipe(replace(/\/\/# sourceMappingURL=.+$/, ""))
|
||||||
|
.pipe(gulp.dest(JS_BUILD));
|
||||||
|
});
|
||||||
|
|
||||||
gulp.task("asset-rev", function () {
|
gulp.task("asset-rev", function () {
|
||||||
return gulp
|
return gulp
|
||||||
.src(["assets/*.min.css", "assets/js/*.min.js"], {
|
.src([CSS_BUILD + "/*.min.css", JS_BUILD + "/*.min.js"], {
|
||||||
base: "static",
|
base: BUILD + "/assets",
|
||||||
})
|
})
|
||||||
.pipe(gulp.dest("build/assets"))
|
|
||||||
.pipe(rev())
|
.pipe(rev())
|
||||||
.pipe(gulp.dest("static"))
|
.pipe(gulp.dest("static"))
|
||||||
.pipe(
|
.pipe(
|
||||||
|
@ -201,22 +235,52 @@ gulp.task("asset-rev", function () {
|
||||||
.pipe(gulp.dest("data"));
|
.pipe(gulp.dest("data"));
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task("asset-rm", function () {
|
gulp.task("asset-map", function () {
|
||||||
return gulp
|
return gulp
|
||||||
.src(["build/assets", "static/js/*-*.js", "static/*-*.css"], {
|
.src([CSS_BUILD + "/*.min.css.map", JS_BUILD + "/*.min.js.map"], {
|
||||||
read: false,
|
base: BUILD + "/assets",
|
||||||
allowEmpty: true,
|
|
||||||
})
|
})
|
||||||
.pipe(clean());
|
.pipe(gulp.dest("static"));
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task("asset", gulp.series("asset-rm", "asset-rev"));
|
gulp.task("clean", function () {
|
||||||
|
return del([
|
||||||
|
BUILD,
|
||||||
|
"layouts/partials/svg-icon-symbols.svg",
|
||||||
|
"static/js/",
|
||||||
|
"static/favicon/",
|
||||||
|
"static/*.min.css",
|
||||||
|
"static/*.css.map",
|
||||||
|
"data/assets.json",
|
||||||
|
"resources",
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
/* Task series */
|
||||||
|
|
||||||
|
gulp.task("asset", gulp.series("asset-sync", "asset-rev"));
|
||||||
|
|
||||||
|
gulp.task("svg", gulp.series("svg-sprite"));
|
||||||
|
|
||||||
gulp.task(
|
gulp.task(
|
||||||
"default",
|
"default",
|
||||||
gulp.series("sass", "svg-sprite", "iconfont", "favicon-generate", "asset")
|
gulp.series([
|
||||||
|
devBuild ? [] : "clean",
|
||||||
|
"sass",
|
||||||
|
"js",
|
||||||
|
"asset",
|
||||||
|
devBuild ? "asset-map" : [],
|
||||||
|
"svg",
|
||||||
|
"iconfont",
|
||||||
|
"favicon-generate",
|
||||||
|
])
|
||||||
);
|
);
|
||||||
|
|
||||||
gulp.task("devel", function () {
|
gulp.task("watch", function () {
|
||||||
gulp.watch("src/sass/**/*.*css", gulp.series("sass", "asset"));
|
gulp.series("default")();
|
||||||
|
gulp.watch(
|
||||||
|
"src/sass/**/*.*css",
|
||||||
|
gulp.series("sass", "asset-rev", "asset-map")
|
||||||
|
);
|
||||||
|
gulp.watch("src/js/*.js", gulp.series("js", "asset-rev", "asset-map"));
|
||||||
});
|
});
|
||||||
|
|
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 13 KiB |
File diff suppressed because it is too large
Load Diff
19
package.json
19
package.json
|
@ -4,7 +4,8 @@
|
||||||
"description": "Hugo theme made for blogs",
|
"description": "Hugo theme made for blogs",
|
||||||
"main": "gulpfile.js",
|
"main": "gulpfile.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"gulp": "gulp"
|
"gulp": "gulp",
|
||||||
|
"server": "hugo server -D -F -s exampleSite/"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
@ -12,22 +13,28 @@
|
||||||
},
|
},
|
||||||
"author": "Robert Kaussow",
|
"author": "Robert Kaussow",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {},
|
"dependencies": {
|
||||||
|
"clipboard": "2.0.8",
|
||||||
|
"flexsearch": "0.6.32",
|
||||||
|
"mermaid": "8.10.1"
|
||||||
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@mr-hope/gulp-sass": "2.0.0",
|
||||||
|
"del": "6.0.0",
|
||||||
"gulp": "4.0.2",
|
"gulp": "4.0.2",
|
||||||
"gulp-autoprefixer": "7.0.1",
|
"gulp-autoprefixer": "7.0.1",
|
||||||
"gulp-clean": "0.4.0",
|
|
||||||
"gulp-clean-css": "4.3.0",
|
"gulp-clean-css": "4.3.0",
|
||||||
"gulp-concat": "2.6.1",
|
|
||||||
"gulp-iconfont": "11.0.0",
|
"gulp-iconfont": "11.0.0",
|
||||||
"gulp-real-favicon": "0.3.2",
|
"gulp-real-favicon": "0.3.2",
|
||||||
"gulp-rename": "2.0.0",
|
"gulp-rename": "2.0.0",
|
||||||
|
"gulp-replace": "1.1.3",
|
||||||
"gulp-rev": "9.0.0",
|
"gulp-rev": "9.0.0",
|
||||||
"gulp-sass": "4.1.0",
|
"gulp-sourcemaps": "3.0.0",
|
||||||
"gulp-svg-sprite": "1.5.0",
|
"gulp-svg-sprite": "1.5.0",
|
||||||
|
"gulp-uglify": "3.0.2",
|
||||||
"prettier": "2.3.0",
|
"prettier": "2.3.0",
|
||||||
"prettier-plugin-go-template": "0.0.10",
|
"prettier-plugin-go-template": "0.0.10",
|
||||||
"run-sequence": "2.2.1"
|
"through2": "4.0.2"
|
||||||
},
|
},
|
||||||
"browserslist": [
|
"browserslist": [
|
||||||
"last 2 version",
|
"last 2 version",
|
||||||
|
|
|
@ -53,3 +53,10 @@
|
||||||
.hidden {
|
.hidden {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.svg-sprite {
|
||||||
|
position: absolute;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue