mirror of
https://github.com/thegeeklab/hugo-geekblog.git
synced 2024-11-21 20:50:40 +00:00
refactor: cleanup and restructure gulp tasks (#32)
This commit is contained in:
parent
b9d616e975
commit
5cb5dc0833
9
.gitignore
vendored
9
.gitignore
vendored
@ -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/
|
||||||
|
7
assets/js/clipboard.min.js
vendored
7
assets/js/clipboard.min.js
vendored
File diff suppressed because one or more lines are too long
49
assets/js/mermaid.min.js
vendored
49
assets/js/mermaid.min.js
vendored
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 |
3206
package-lock.json
generated
3206
package-lock.json
generated
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
Block a user