From f37db730d575017746f38096693e87737cfc4c61 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sun, 22 Nov 2020 14:01:47 +0100 Subject: [PATCH 1/7] pre-hash static css/js assets --- .gitignore | 1 + data/assets-static.json | 3 ++ data/assets.json | 8 ---- gulpfile.js | 29 ++++++++++--- package-lock.json | 93 +++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 6 files changed, 122 insertions(+), 13 deletions(-) create mode 100644 data/assets-static.json delete mode 100644 data/assets.json diff --git a/.gitignore b/.gitignore index 172ab0d..0949a88 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ static/favicon/ static/fonts/GeekblogIcons.* resources/ exampleSite/resources/ +data/assets.json # testing .lighthouseci/ diff --git a/data/assets-static.json b/data/assets-static.json new file mode 100644 index 0000000..9f6cf5d --- /dev/null +++ b/data/assets-static.json @@ -0,0 +1,3 @@ +{ + "custom.css": "custom.css" +} diff --git a/data/assets.json b/data/assets.json deleted file mode 100644 index 20a527d..0000000 --- a/data/assets.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "main.min.css": "main.min.css", - "mobile.min.css": "mobile.min.css", - "print.min.css": "print.min.css", - "custom.css": "custom.css", - "js/clipboard.min.js": "js/clipboard.min.js", - "js/mermaid.min.js": "js/mermaid.min.js" -} diff --git a/gulpfile.js b/gulpfile.js index fe30645..b946efd 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -10,6 +10,7 @@ const path = require("path"); const fs = require("fs"); const svgSprite = require("gulp-svg-sprite"); +const rev = require("gulp-rev"); var CSSDEST = "static/"; var FAVICON_DATA_FILE = "tmp/faviconData.json"; @@ -169,21 +170,39 @@ gulp.task("iconfont", function () { .pipe( iconfont({ startUnicode: lastUnicode, - fontName: "GeekblogIcons", // required - prependUnicode: true, // recommended option + fontName: "GeekblogIcons", + prependUnicode: true, normalize: true, fontHeight: 1001, centerHorizontally: true, - formats: ["woff", "woff2"], // default, 'woff2' and 'svg' are available - timestamp: TIMESTAMP, // recommended to get consistent builds when watching files + formats: ["woff", "woff2"], + timestamp: TIMESTAMP, }) ) .pipe(gulp.dest("static/fonts/")); }); +gulp.task("asset-rev", function () { + return gulp + .src(["static/*!(custom).min.css", "static/js/*.min.js"], { + base: "static", + }) + .pipe(gulp.dest("tmp/assets")) + .pipe(rev()) + .pipe(gulp.dest("tmp/assets")) + .pipe( + rev.manifest("data/assets-static.json", { + base: "data", + merge: true, + }) + ) + .pipe(rename("assets.json")) + .pipe(gulp.dest("data")); +}); + gulp.task( "default", - gulp.series("sass", "svg-sprite", "iconfont", "favicon-generate") + gulp.series("sass", "svg-sprite", "iconfont", "favicon-generate", "asset-rev") ); gulp.task("devel", function () { diff --git a/package-lock.json b/package-lock.json index 32290ab..bdcc4b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1840,6 +1840,15 @@ "parse-filepath": "^1.0.1" } }, + "first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, "flagged-respawn": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", @@ -2855,6 +2864,22 @@ "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==", "dev": true }, + "gulp-rev": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/gulp-rev/-/gulp-rev-9.0.0.tgz", + "integrity": "sha512-Ytx/uzDA2xNxHlPG8GReS1ut00msd0HlKDk9Ai/0xF2yvg+DAeGRAviCFlQzQmdZtqAoXznYspwWoGEoxDvhyA==", + "dev": true, + "requires": { + "modify-filename": "^1.1.0", + "plugin-error": "^1.0.1", + "rev-hash": "^2.0.0", + "rev-path": "^2.0.0", + "sort-keys": "^2.0.0", + "through2": "^2.0.0", + "vinyl": "^2.1.0", + "vinyl-file": "^3.0.0" + } + }, "gulp-sass": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-4.1.0.tgz", @@ -3460,6 +3485,12 @@ } } }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -4456,6 +4487,12 @@ } } }, + "modify-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz", + "integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE=", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -5590,6 +5627,21 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "rev-hash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rev-hash/-/rev-hash-2.0.0.tgz", + "integrity": "sha1-dyCiNu0MJY3z5kvsA+wEiwW5JMQ=", + "dev": true + }, + "rev-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rev-path/-/rev-path-2.0.0.tgz", + "integrity": "sha512-G5R2L9gYu9kEuqPfIFgO9gO+OhBWOAT83HyauOQmGHO6y9Fsa4acv+XsmNhNDrod0HDh1/VxJRmsffThzeHJlQ==", + "dev": true, + "requires": { + "modify-filename": "^1.0.0" + } + }, "rfg-api": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/rfg-api/-/rfg-api-0.5.0.tgz", @@ -6195,6 +6247,15 @@ } } }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -6447,6 +6508,25 @@ "is-utf8": "^0.2.0" } }, + "strip-bom-buf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", + "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", + "dev": true, + "requires": { + "is-utf8": "^0.2.1" + } + }, + "strip-bom-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", + "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", + "dev": true, + "requires": { + "first-chunk-stream": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -7278,6 +7358,19 @@ "replace-ext": "^1.0.0" } }, + "vinyl-file": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-3.0.0.tgz", + "integrity": "sha1-sQTZ5ECf+jJfqt1SBkLQo7SIs2U=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.3.0", + "strip-bom-buf": "^1.0.0", + "strip-bom-stream": "^2.0.0", + "vinyl": "^2.0.1" + } + }, "vinyl-fs": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", diff --git a/package.json b/package.json index a09bc2a..9de69e3 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "gulp-iconfont": "10.0.3", "gulp-real-favicon": "0.3.2", "gulp-rename": "2.0.0", + "gulp-rev": "^9.0.0", "gulp-sass": "4.1.0", "gulp-svg-sprite": "1.5.0", "prettier": "2.1.2", From e896b5439475cc46fff6f34ecfcef4c005ec085c Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sun, 22 Nov 2020 14:12:04 +0100 Subject: [PATCH 2/7] remove auto-generated files from repo --- .gitignore | 4 ++- gulpfile.js | 2 +- static/mobile.css | 61 ------------------------------------------- static/mobile.min.css | 1 - static/print.css | 32 ----------------------- static/print.min.css | 1 - 6 files changed, 4 insertions(+), 97 deletions(-) delete mode 100644 static/mobile.css delete mode 100644 static/mobile.min.css delete mode 100644 static/print.css delete mode 100644 static/print.min.css diff --git a/.gitignore b/.gitignore index 0949a88..471d59c 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,9 @@ exampleSite/public/ # auto-generated files layouts/partials/icons-svg-symbols.html -static/main.* +static/*.css +!static/custom.css +static/js/*-*.js static/favicon/ static/fonts/GeekblogIcons.* resources/ diff --git a/gulpfile.js b/gulpfile.js index b946efd..49495dc 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -189,7 +189,7 @@ gulp.task("asset-rev", function () { }) .pipe(gulp.dest("tmp/assets")) .pipe(rev()) - .pipe(gulp.dest("tmp/assets")) + .pipe(gulp.dest("static")) .pipe( rev.manifest("data/assets-static.json", { base: "data", diff --git a/static/mobile.css b/static/mobile.css deleted file mode 100644 index d06c3b5..0000000 --- a/static/mobile.css +++ /dev/null @@ -1,61 +0,0 @@ -@media screen and (max-width:45rem) { - .gblog-brand { - font-size: 2.2rem - } - .gblog-nav .container { - padding: 0 - } - .gblog-nav__list { - background: #454b5b; - flex-direction: column; - justify-content: center; - max-height: 0; - overflow: hidden - } - .gblog-nav__entry { - padding: 1rem 0; - border: 0; - border-radius: 0; - display: block; - margin: 0; - text-align: center - } - .gblog-nav__entry.is-active, - .gblog-nav__entry:hover { - background: #3a3f4d - } - .gblog-nav__control { - display: block; - text-align: center - } - .gblog-nav__control label { - padding: 1rem 0 - } - .gblog-error { - padding: 6rem 1rem - } - .gblog-error .icon { - font-size: 5rem - } - .gblog-error__message { - padding-left: 2rem - } - .gblog-error__line { - padding: .25rem 0 - } - .gblog-error__title { - font-size: 2rem - } - .gblog-footer__item { - width: 100% - } -} -#menu-control:checked ~ .gblog-nav__list { - max-height: 100% -} -#menu-control:checked ~ .gblog-nav__control .icon.menu { - display: none -} -#menu-control:checked ~ .gblog-nav__control .icon.clear { - display: inline-block -} \ No newline at end of file diff --git a/static/mobile.min.css b/static/mobile.min.css deleted file mode 100644 index 1b76314..0000000 --- a/static/mobile.min.css +++ /dev/null @@ -1 +0,0 @@ -@media screen and (max-width:45rem){.gblog-brand{font-size:2.2rem}.gblog-nav .container{padding:0}.gblog-nav__list{background:#454b5b;flex-direction:column;justify-content:center;max-height:0;overflow:hidden}.gblog-nav__entry{padding:1rem 0;border:0;border-radius:0;display:block;margin:0;text-align:center}.gblog-nav__entry.is-active,.gblog-nav__entry:hover{background:#3a3f4d}.gblog-nav__control{display:block;text-align:center}.gblog-nav__control label{padding:1rem 0}.gblog-error{padding:6rem 1rem}.gblog-error .icon{font-size:5rem}.gblog-error__message{padding-left:2rem}.gblog-error__line{padding:.25rem 0}.gblog-error__title{font-size:2rem}.gblog-footer__item{width:100%}}#menu-control:checked~.gblog-nav__list{max-height:100%}#menu-control:checked~.gblog-nav__control .icon.menu{display:none}#menu-control:checked~.gblog-nav__control .icon.clear{display:inline-block} \ No newline at end of file diff --git a/static/print.css b/static/print.css deleted file mode 100644 index 75afc76..0000000 --- a/static/print.css +++ /dev/null @@ -1,32 +0,0 @@ -@media print { - .gblog-footer .container div:not(:last-child), - .gblog-nav, - .gblog-paging, - .gblog-post__anchor, - .gblog-post__readmore { - display: none - } - .gblog-header { - border-bottom: 1px solid #dee2e6 - } - .gblog-footer { - border-top: 1px solid #dee2e6 - } - .gblog-markdown pre { - white-space: pre-wrap; - overflow-wrap: break-word - } - .chroma code { - border: 1px solid #dee2e6; - padding: .5rem!important; - font-weight: 400!important - } - .gblog-markdown code { - font-weight: 700 - } - a, - a:visited { - color: inherit!important; - text-decoration: none!important - } -} \ No newline at end of file diff --git a/static/print.min.css b/static/print.min.css deleted file mode 100644 index 0ddf00e..0000000 --- a/static/print.min.css +++ /dev/null @@ -1 +0,0 @@ -@media print{.gblog-footer .container div:not(:last-child),.gblog-nav,.gblog-paging,.gblog-post__anchor,.gblog-post__readmore{display:none}.gblog-header{border-bottom:1px solid #dee2e6}.gblog-footer{border-top:1px solid #dee2e6}.gblog-markdown pre{white-space:pre-wrap;overflow-wrap:break-word}.chroma code{border:1px solid #dee2e6;padding:.5rem!important;font-weight:400!important}.gblog-markdown code{font-weight:700}a,a:visited{color:inherit!important;text-decoration:none!important}} \ No newline at end of file From a28863decfbfe70d51d6b5386c79566a3f62789f Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sun, 22 Nov 2020 15:00:45 +0100 Subject: [PATCH 3/7] restructure assets --- .gitignore | 5 +- {static => assets}/js/clipboard.min.js | 0 {static => assets}/js/mermaid.min.js | 0 {static => assets}/js/mermaid.min.js.map | 0 gulpfile.js | 21 ++- package-lock.json | 170 +++++++++++++++++++++++ package.json | 2 + src/sass/_base.scss | 2 +- static/assets.json | 8 ++ 9 files changed, 199 insertions(+), 9 deletions(-) rename {static => assets}/js/clipboard.min.js (100%) rename {static => assets}/js/mermaid.min.js (100%) rename {static => assets}/js/mermaid.min.js.map (100%) create mode 100644 static/assets.json diff --git a/.gitignore b/.gitignore index 471d59c..bc59a90 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ .swp .env* dist/ -tmp/ +build/ node_modules/ lhci_reports/ exampleSite/themes/ @@ -10,9 +10,10 @@ exampleSite/public/ # auto-generated files layouts/partials/icons-svg-symbols.html +assets/*.css static/*.css !static/custom.css -static/js/*-*.js +static/js/*.js static/favicon/ static/fonts/GeekblogIcons.* resources/ diff --git a/static/js/clipboard.min.js b/assets/js/clipboard.min.js similarity index 100% rename from static/js/clipboard.min.js rename to assets/js/clipboard.min.js diff --git a/static/js/mermaid.min.js b/assets/js/mermaid.min.js similarity index 100% rename from static/js/mermaid.min.js rename to assets/js/mermaid.min.js diff --git a/static/js/mermaid.min.js.map b/assets/js/mermaid.min.js.map similarity index 100% rename from static/js/mermaid.min.js.map rename to assets/js/mermaid.min.js.map diff --git a/gulpfile.js b/gulpfile.js index 49495dc..59501c0 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -8,12 +8,13 @@ const iconfont = require("gulp-iconfont"); const realFavicon = require("gulp-real-favicon"); const path = require("path"); const fs = require("fs"); +const del = require("del"); const svgSprite = require("gulp-svg-sprite"); const rev = require("gulp-rev"); -var CSSDEST = "static/"; -var FAVICON_DATA_FILE = "tmp/faviconData.json"; +var CSSDEST = "assets/"; +var FAVICON_DATA_FILE = "build/faviconData.json"; var TIMESTAMP = Math.round(Date.now() / 1000); gulp.task("sass", function () { @@ -121,7 +122,7 @@ gulp.task("svg-sprite", function () { padding: 5, box: "content", }, - dest: "tmp/intermediate-svg", + dest: "build/intermediate-svg", }, svg: { xmlDeclaration: false, @@ -184,10 +185,10 @@ gulp.task("iconfont", function () { gulp.task("asset-rev", function () { return gulp - .src(["static/*!(custom).min.css", "static/js/*.min.js"], { + .src(["assets/*.min.css", "assets/js/*.min.js"], { base: "static", }) - .pipe(gulp.dest("tmp/assets")) + .pipe(gulp.dest("build/assets")) .pipe(rev()) .pipe(gulp.dest("static")) .pipe( @@ -200,11 +201,19 @@ gulp.task("asset-rev", function () { .pipe(gulp.dest("data")); }); +gulp.task("asset-rm", function () { + return gulp + .src(["build/assets", "static/js/*-*.js", "static/*-*.js"], { read: false }) + .pipe(clean()); +}); + gulp.task( "default", gulp.series("sass", "svg-sprite", "iconfont", "favicon-generate", "asset-rev") ); +gulp.task("asset", gulp.series("asset-rev", "asset-rm")); + gulp.task("devel", function () { - gulp.watch("src/sass/**/*.*css", gulp.series("sass")); + gulp.watch("src/sass/**/*.*css", gulp.series("sass", "asset")); }); diff --git a/package-lock.json b/package-lock.json index bdcc4b4..8090cd4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -275,6 +275,15 @@ } } }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", @@ -1238,6 +1247,28 @@ } } }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -2698,6 +2729,19 @@ "which": "^1.2.14" } }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, "globule": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz", @@ -2795,6 +2839,71 @@ } } }, + "gulp-clean": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/gulp-clean/-/gulp-clean-0.4.0.tgz", + "integrity": "sha512-DARK8rNMo4lHOFLGTiHEJdf19GuoBDHqGUaypz+fOhrvOs3iFO7ntdYtdpNxv+AzSJBx/JfypF0yEj9ks1IStQ==", + "dev": true, + "requires": { + "fancy-log": "^1.3.2", + "plugin-error": "^0.1.2", + "rimraf": "^2.6.2", + "through2": "^2.0.3", + "vinyl": "^2.1.0" + }, + "dependencies": { + "arr-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" + } + }, + "arr-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", + "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", + "dev": true + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "dev": true, + "requires": { + "kind-of": "^1.1.0" + } + }, + "kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", + "dev": true + }, + "plugin-error": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", + "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "dev": true, + "requires": { + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" + } + } + } + }, "gulp-clean-css": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/gulp-clean-css/-/gulp-clean-css-4.3.0.tgz", @@ -3485,6 +3594,30 @@ } } }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -5038,6 +5171,12 @@ "p-limit": "^2.0.0" } }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -5109,6 +5248,12 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -5627,6 +5772,31 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "rev-del": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rev-del/-/rev-del-2.0.0.tgz", + "integrity": "sha512-2VavvEMPmvciWcFtHLOJ72qg/OigywOvt+2yrhSXW3ZxNeCfVbCy6Ja0npdSlZiSVBMok7R8RriHeSCx6soEUQ==", + "dev": true, + "requires": { + "del": "^3.0.0", + "lodash": "^4.17.11", + "mocha": "^5.2.0", + "should": "^13.2.3", + "through2": "^3.0.0" + }, + "dependencies": { + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + } + } + }, "rev-hash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/rev-hash/-/rev-hash-2.0.0.tgz", diff --git a/package.json b/package.json index 9de69e3..a04b69d 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "devDependencies": { "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": "10.0.3", @@ -26,6 +27,7 @@ "gulp-svg-sprite": "1.5.0", "prettier": "2.1.2", "prettier-plugin-go-template": "0.0.10", + "rev-del": "^2.0.0", "run-sequence": "2.2.1" }, "browserslist": [ diff --git a/src/sass/_base.scss b/src/sass/_base.scss index bce324c..b37c231 100644 --- a/src/sass/_base.scss +++ b/src/sass/_base.scss @@ -1,5 +1,5 @@ html { - font-size: $font-size-base; + font-size: 3rem; letter-spacing: 0.33px; scroll-behavior: smooth; } diff --git a/static/assets.json b/static/assets.json new file mode 100644 index 0000000..ccec2ab --- /dev/null +++ b/static/assets.json @@ -0,0 +1,8 @@ +{ + "custom.css": "custom.css", + "js/clipboard.min.js": "js/clipboard-f06c52bfdd.min.js", + "js/mermaid.min.js": "js/mermaid-ffd6bf77ad.min.js", + "main.min.css": "main-85732d8853.min.css", + "mobile.min.css": "mobile-dc4707ee5b.min.css", + "print.min.css": "print-86167e859a.min.css" +} \ No newline at end of file From 6493bdde05b6b20a9f87e4e7977dd280306763e8 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sun, 22 Nov 2020 15:23:56 +0100 Subject: [PATCH 4/7] hash css/js assets by default --- .tarignore | 4 +++- CHANGELOG.md | 15 +++------------ gulpfile.js | 13 ++++++++----- src/sass/_base.scss | 2 +- static/assets.json | 8 -------- 5 files changed, 15 insertions(+), 27 deletions(-) delete mode 100644 static/assets.json diff --git a/.tarignore b/.tarignore index 366a510..2c79ca3 100644 --- a/.tarignore +++ b/.tarignore @@ -11,4 +11,6 @@ node* local* dist src -tmp +build +renovate* +resources diff --git a/CHANGELOG.md b/CHANGELOG.md index 457f841..2185b6e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,14 +1,5 @@ - ENHANCEMENT - - add node `gulp` script to package.json - - remove `title` and set empty `alt` tag on branding image - - add minimal working css for printing - - split out mobile css - load static css/js assets from data template: - This way users can hash static assets and overwrite the data template - to deliver the hashed assets. Thats helpful if you have to deal with - long cache settings but wont to ensure your updated assets are delivered - to clients. -- BUGFIX - - use relative URL's for fonts -- INTERNAL - - publish Lighthouse CI overwiew to PR's + Build-in assets are now hashed by default. The static assets are located + in the `assests` directory. The theme will read and use tha hashed files + from `data/assets.json`. Exception: `custom.css` will be used unhashed. diff --git a/gulpfile.js b/gulpfile.js index 59501c0..c1cd94e 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -4,11 +4,11 @@ const sass = require("gulp-sass"); const cleanCSS = require("gulp-clean-css"); const autoprefixer = require("gulp-autoprefixer"); const iconfont = require("gulp-iconfont"); +const clean = require("gulp-clean"); const realFavicon = require("gulp-real-favicon"); const path = require("path"); const fs = require("fs"); -const del = require("del"); const svgSprite = require("gulp-svg-sprite"); const rev = require("gulp-rev"); @@ -203,17 +203,20 @@ gulp.task("asset-rev", function () { gulp.task("asset-rm", function () { return gulp - .src(["build/assets", "static/js/*-*.js", "static/*-*.js"], { read: false }) + .src(["build/assets", "static/js/*-*.js", "static/*-*.css"], { + read: false, + allowEmpty: true, + }) .pipe(clean()); }); +gulp.task("asset", gulp.series("asset-rm", "asset-rev")); + gulp.task( "default", - gulp.series("sass", "svg-sprite", "iconfont", "favicon-generate", "asset-rev") + gulp.series("sass", "svg-sprite", "iconfont", "favicon-generate", "asset") ); -gulp.task("asset", gulp.series("asset-rev", "asset-rm")); - gulp.task("devel", function () { gulp.watch("src/sass/**/*.*css", gulp.series("sass", "asset")); }); diff --git a/src/sass/_base.scss b/src/sass/_base.scss index b37c231..bce324c 100644 --- a/src/sass/_base.scss +++ b/src/sass/_base.scss @@ -1,5 +1,5 @@ html { - font-size: 3rem; + font-size: $font-size-base; letter-spacing: 0.33px; scroll-behavior: smooth; } diff --git a/static/assets.json b/static/assets.json deleted file mode 100644 index ccec2ab..0000000 --- a/static/assets.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "custom.css": "custom.css", - "js/clipboard.min.js": "js/clipboard-f06c52bfdd.min.js", - "js/mermaid.min.js": "js/mermaid-ffd6bf77ad.min.js", - "main.min.css": "main-85732d8853.min.css", - "mobile.min.css": "mobile-dc4707ee5b.min.css", - "print.min.css": "print-86167e859a.min.css" -} \ No newline at end of file From f27a46db44413cefdbf278e7f67949a838c32156 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sun, 22 Nov 2020 15:30:11 +0100 Subject: [PATCH 5/7] fix typo --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2185b6e..2c4c5d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ - ENHANCEMENT - load static css/js assets from data template: Build-in assets are now hashed by default. The static assets are located - in the `assests` directory. The theme will read and use tha hashed files + in the `assests` directory. The theme will read and use the hashed files from `data/assets.json`. Exception: `custom.css` will be used unhashed. From 94144dd5f814a673850fcf77bc5402d3540c8451 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sun, 22 Nov 2020 15:39:08 +0100 Subject: [PATCH 6/7] cleanup gulp deps --- package-lock.json | 105 ---------------------------------------------- package.json | 1 - 2 files changed, 106 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8090cd4..04f899e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -275,15 +275,6 @@ } } }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", @@ -1247,28 +1238,6 @@ } } }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -2729,19 +2698,6 @@ "which": "^1.2.14" } }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, "globule": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz", @@ -3594,30 +3550,6 @@ } } }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -5171,12 +5103,6 @@ "p-limit": "^2.0.0" } }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "dev": true - }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -5248,12 +5174,6 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -5772,31 +5692,6 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, - "rev-del": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/rev-del/-/rev-del-2.0.0.tgz", - "integrity": "sha512-2VavvEMPmvciWcFtHLOJ72qg/OigywOvt+2yrhSXW3ZxNeCfVbCy6Ja0npdSlZiSVBMok7R8RriHeSCx6soEUQ==", - "dev": true, - "requires": { - "del": "^3.0.0", - "lodash": "^4.17.11", - "mocha": "^5.2.0", - "should": "^13.2.3", - "through2": "^3.0.0" - }, - "dependencies": { - "through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - } - } - }, "rev-hash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/rev-hash/-/rev-hash-2.0.0.tgz", diff --git a/package.json b/package.json index a04b69d..00e1ace 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,6 @@ "gulp-svg-sprite": "1.5.0", "prettier": "2.1.2", "prettier-plugin-go-template": "0.0.10", - "rev-del": "^2.0.0", "run-sequence": "2.2.1" }, "browserslist": [ From 7d1b62e627e20a39c69f4ead0a1e519ef1f85c71 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sun, 22 Nov 2020 16:52:28 +0100 Subject: [PATCH 7/7] fix typo --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c4c5d1..26ecea7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ - ENHANCEMENT - load static css/js assets from data template: Build-in assets are now hashed by default. The static assets are located - in the `assests` directory. The theme will read and use the hashed files + in the `assets` directory. The theme will read and use the hashed files from `data/assets.json`. Exception: `custom.css` will be used unhashed.