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
|
||||
|
||||
# auto-generated files
|
||||
layouts/partials/icons-svg-symbols.html
|
||||
assets/*.css
|
||||
static/*.css
|
||||
!static/custom.css
|
||||
static/js/*.js
|
||||
layouts/partials/svg-icon-symbols.html
|
||||
static/*.min.css
|
||||
static/*.min.css.map
|
||||
static/js/
|
||||
static/favicon/
|
||||
static/fonts/GeekblogIcons.*
|
||||
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 rename = require("gulp-rename");
|
||||
const sass = require("gulp-sass");
|
||||
const { sass } = require("@mr-hope/gulp-sass");
|
||||
const cleanCSS = require("gulp-clean-css");
|
||||
const autoprefixer = require("gulp-autoprefixer");
|
||||
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 path = require("path");
|
||||
const fs = require("fs");
|
||||
|
||||
const svgSprite = require("gulp-svg-sprite");
|
||||
const rev = require("gulp-rev");
|
||||
const replace = require("gulp-replace");
|
||||
|
||||
var CSSDEST = "assets/";
|
||||
var FAVICON_DATA_FILE = "build/faviconData.json";
|
||||
const path = require("path");
|
||||
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);
|
||||
|
||||
function noop() {
|
||||
return through.obj();
|
||||
}
|
||||
|
||||
gulp.task("sass", function () {
|
||||
return gulp
|
||||
.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(
|
||||
autoprefixer({
|
||||
cascade: false,
|
||||
})
|
||||
)
|
||||
.pipe(gulp.dest(CSSDEST))
|
||||
.pipe(gulp.dest(CSS_BUILD))
|
||||
.pipe(cleanCSS())
|
||||
.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) {
|
||||
@ -122,12 +137,12 @@ gulp.task("svg-sprite", function () {
|
||||
padding: 5,
|
||||
box: "content",
|
||||
},
|
||||
dest: "build/intermediate-svg",
|
||||
dest: BUILD + "/intermediate-svg",
|
||||
},
|
||||
svg: {
|
||||
xmlDeclaration: false,
|
||||
rootAttributes: {
|
||||
style: "position: absolute; width: 0; height: 0; overflow: hidden;",
|
||||
class: "svg-sprite",
|
||||
},
|
||||
},
|
||||
mode: {
|
||||
@ -150,8 +165,7 @@ gulp.task("iconfont", function () {
|
||||
var lastUnicode = 0xea01;
|
||||
var files = fs.readdirSync("src/iconfont");
|
||||
|
||||
// Filter files with containing unicode value
|
||||
// and set last unicode
|
||||
// Filter files with containing unicode value and set last unicode
|
||||
files.forEach(function (file) {
|
||||
var basename = path.basename(file);
|
||||
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/"));
|
||||
});
|
||||
|
||||
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 () {
|
||||
return gulp
|
||||
.src(["assets/*.min.css", "assets/js/*.min.js"], {
|
||||
base: "static",
|
||||
.src([CSS_BUILD + "/*.min.css", JS_BUILD + "/*.min.js"], {
|
||||
base: BUILD + "/assets",
|
||||
})
|
||||
.pipe(gulp.dest("build/assets"))
|
||||
.pipe(rev())
|
||||
.pipe(gulp.dest("static"))
|
||||
.pipe(
|
||||
@ -201,22 +235,52 @@ gulp.task("asset-rev", function () {
|
||||
.pipe(gulp.dest("data"));
|
||||
});
|
||||
|
||||
gulp.task("asset-rm", function () {
|
||||
gulp.task("asset-map", function () {
|
||||
return gulp
|
||||
.src(["build/assets", "static/js/*-*.js", "static/*-*.css"], {
|
||||
read: false,
|
||||
allowEmpty: true,
|
||||
.src([CSS_BUILD + "/*.min.css.map", JS_BUILD + "/*.min.js.map"], {
|
||||
base: BUILD + "/assets",
|
||||
})
|
||||
.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(
|
||||
"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.watch("src/sass/**/*.*css", gulp.series("sass", "asset"));
|
||||
gulp.task("watch", function () {
|
||||
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",
|
||||
"main": "gulpfile.js",
|
||||
"scripts": {
|
||||
"gulp": "gulp"
|
||||
"gulp": "gulp",
|
||||
"server": "hugo server -D -F -s exampleSite/"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -12,22 +13,28 @@
|
||||
},
|
||||
"author": "Robert Kaussow",
|
||||
"license": "MIT",
|
||||
"dependencies": {},
|
||||
"dependencies": {
|
||||
"clipboard": "2.0.8",
|
||||
"flexsearch": "0.6.32",
|
||||
"mermaid": "8.10.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@mr-hope/gulp-sass": "2.0.0",
|
||||
"del": "6.0.0",
|
||||
"gulp": "4.0.2",
|
||||
"gulp-autoprefixer": "7.0.1",
|
||||
"gulp-clean": "0.4.0",
|
||||
"gulp-clean-css": "4.3.0",
|
||||
"gulp-concat": "2.6.1",
|
||||
"gulp-iconfont": "11.0.0",
|
||||
"gulp-real-favicon": "0.3.2",
|
||||
"gulp-rename": "2.0.0",
|
||||
"gulp-replace": "1.1.3",
|
||||
"gulp-rev": "9.0.0",
|
||||
"gulp-sass": "4.1.0",
|
||||
"gulp-sourcemaps": "3.0.0",
|
||||
"gulp-svg-sprite": "1.5.0",
|
||||
"gulp-uglify": "3.0.2",
|
||||
"prettier": "2.3.0",
|
||||
"prettier-plugin-go-template": "0.0.10",
|
||||
"run-sequence": "2.2.1"
|
||||
"through2": "4.0.2"
|
||||
},
|
||||
"browserslist": [
|
||||
"last 2 version",
|
||||
|
@ -53,3 +53,10 @@
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.svg-sprite {
|
||||
position: absolute;
|
||||
width: 0;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user