diff --git a/Gemfile.lock b/Gemfile.lock
index 26962a50..a89cc2e8 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -75,6 +75,7 @@ GEM
webrick (1.7.0)
PLATFORMS
+ ruby
x86_64-darwin-20
DEPENDENCIES
diff --git a/_config.yml b/_config.yml
index 660364a4..807e8508 100644
--- a/_config.yml
+++ b/_config.yml
@@ -25,6 +25,7 @@ exclude:
- package-lock.json
- README.md
- src
+ - assets
- tailwind.config.js
- netlify.toml
- vendor
diff --git a/_includes/scripts.html b/_includes/scripts.html
index 5e51c918..cb82f53a 100644
--- a/_includes/scripts.html
+++ b/_includes/scripts.html
@@ -1,2 +1,2 @@
-
-
+
+
diff --git a/gulpfile.babel.js b/gulpfile.babel.js
index ddcdca0e..6e5a9ca9 100644
--- a/gulpfile.babel.js
+++ b/gulpfile.babel.js
@@ -1,97 +1,99 @@
-import autoprefixer from "autoprefixer";
-import browserSync from "browser-sync";
-import spawn from "cross-spawn";
-import cssnano from "cssnano";
-import { dest, series, src, task, watch } from "gulp";
-import postcss from "gulp-postcss";
-import atimport from "postcss-import";
-import imagemin from "gulp-imagemin";
-import tailwindcss from "tailwindcss";
+import { dest, series, parallel, src, watch as gwatch } from 'gulp'
+import autoprefixer from 'autoprefixer'
+import browserSync from 'browser-sync'
+import spawn from 'cross-spawn'
+import cssnano from 'cssnano'
+import postcss from 'gulp-postcss'
+import atimport from 'postcss-import'
+import imagemin from 'gulp-imagemin'
+import minify from 'gulp-minify'
+import tailwindcss from 'tailwindcss'
-const SITE_ROOT = "./_site";
-const POST_BUILD_STYLESHEET = `${SITE_ROOT}/assets/css/`;
-const PRE_BUILD_STYLESHEET = "./assets/css/style.css";
-const IMAGES = "./assets/img";
-const IMAGES_MINIMIZED = `${SITE_ROOT}/assets/`;
-const TAILWIND_CONFIG = "./tailwind.config.js";
+const SITE_ROOT = './_site'
+const POST_BUILD_STYLESHEET = `${SITE_ROOT}/assets/css/`
+const PRE_BUILD_STYLESHEET = './assets/css/style.css'
+const IMAGES = './assets/img/**/*'
+const IMAGES_MINIMIZED = `${SITE_ROOT}/assets/img/`
+const TAILWIND_CONFIG = './tailwind.config.js'
// Fix for Windows compatibility
-const jekyll = process.platform === "win32" ? "jekyll.bat" : "jekyll";
+const jekyll = process.platform === 'win32' ? 'jekyll.bat' : 'jekyll'
-const isDevelopmentBuild = process.env.NODE_ENV === "development";
+const isDevelopmentBuild = process.env.NODE_ENV === 'development'
-task("buildJekyll", () => {
- browserSync.notify("Building Jekyll site...");
-
- const args = ["exec", jekyll, "build"];
+const content = () => {
+ browserSync.notify('Building Jekyll site...')
+ const args = ['exec', jekyll, 'build']
if (isDevelopmentBuild) {
- args.push("--incremental");
+ args.push('--incremental')
}
- return spawn("bundle", args, { stdio: "inherit" });
-});
+ return spawn('bundle', args, { stdio: 'inherit' })
+}
-task("processStyles", () => {
- browserSync.notify("Compiling styles...");
+const scripts = () =>
+ src('./assets/js/*')
+ .pipe(minify({ext:{min:'.min.js' }, mangle: true}))
+ .pipe(dest(`${SITE_ROOT}/assets/js/`))
+ .pipe(browserSync.stream())
- return src(PRE_BUILD_STYLESHEET)
+const styles = () =>
+ src(PRE_BUILD_STYLESHEET)
.pipe(
- postcss([
- atimport(),
- tailwindcss(TAILWIND_CONFIG),
- ...(isDevelopmentBuild ? [] : [autoprefixer(), cssnano()]),
- ])
- )
- .pipe(dest(POST_BUILD_STYLESHEET));
-});
+ postcss([
+ atimport(),
+ tailwindcss(TAILWIND_CONFIG),
+ ...(isDevelopmentBuild ? [] : [autoprefixer(), cssnano()]),
+ ])
+ )
+ .pipe(dest(POST_BUILD_STYLESHEET))
+ .pipe(browserSync.stream())
-task("cname", () => {
- return src('assets/CNAME').pipe(dest(SITE_ROOT));
-});
+const cname = () =>
+ src('assets/CNAME').pipe(dest(SITE_ROOT))
-task("images", () => {
- return src(IMAGES)
- .pipe(
- imagemin([
- imagemin.gifsicle({ interlaced: true }),
- imagemin.optipng({ optimizationLevel: 3 }),
- imagemin.svgo(),
- ])
- )
+const images = () =>
+ src(IMAGES)
+ .pipe(imagemin([
+ imagemin.gifsicle({ interlaced: true }),
+ imagemin.optipng({ optimizationLevel: 3 }),
+ imagemin.svgo(),
+ ]))
+ .pipe(dest(IMAGES_MINIMIZED))
+ .pipe(browserSync.stream())
- .pipe(dest(IMAGES_MINIMIZED));
-});
-
-task("startServer", () => {
+const server = () =>
browserSync.init({
- files: [SITE_ROOT + "/**"],
- open: "local",
+ files: [SITE_ROOT + '/**'],
+ open: 'local',
port: 4000,
server: {
baseDir: SITE_ROOT,
serveStaticOptions: {
- extensions: ["html"],
+ extensions: ['html'],
},
},
- });
+ })
- watch(
- [
- "**/*.css",
- "**/*.html",
- "**/*.js",
- "**/*.md",
- "**/*.markdown",
- "!_site/**/*",
- "!node_modules/**/*",
- ],
- { interval: 500 },
- buildSite
- );
-});
+const watch = () => {
+ gwatch(['_authors/*', '_data/*', '_posts/*', '_layouts/*', '_includes/*'], content)
+ gwatch('**/*.js', scripts)
+ gwatch(PRE_BUILD_STYLESHEET, styles)
+ gwatch(IMAGES, images)
+ //'!_site/**/*',
+ //'!node_modules/**/*',
+}
-const buildSite = series("buildJekyll", "processStyles", "images", "cname");
+const build = series(content, scripts, styles, images, cname)
-exports.serve = series(buildSite, "startServer");
-exports.default = series(buildSite);
+exports.content = content
+exports.scripts = scripts
+exports.styles = styles
+exports.images = images
+exports.cname = cname
+exports.watch = watch
+exports.server = server
+exports.build = build
+exports.devel = series(build, parallel(server, watch))
+exports.default = exports.build
diff --git a/package.json b/package.json
index 49253d6a..27293a84 100644
--- a/package.json
+++ b/package.json
@@ -12,8 +12,10 @@
"cross-env": "7.0.3",
"cross-spawn": "7.0.3",
"cssnano": "5.0.7",
+ "gh-pages": "^3.2.3",
"gulp": "4.0.2",
"gulp-imagemin": "^7.1.0",
+ "gulp-minify": "^3.1.0",
"gulp-postcss": "9.0.0",
"postcss": "8.3.6",
"postcss-import": "14.0.2",
@@ -27,8 +29,5 @@
"start": "yarn run dev",
"clean": "git clean -fdx",
"deploy": "node scripts/deploy.js"
- },
- "dependencies": {
- "gh-pages": "^3.2.3"
}
}
diff --git a/yarn.lock b/yarn.lock
index b3004826..5e96dec1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -309,6 +309,13 @@ ansi-colors@^1.0.1:
dependencies:
ansi-wrap "^0.1.0"
+ansi-cyan@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873"
+ integrity sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=
+ dependencies:
+ ansi-wrap "0.1.0"
+
ansi-gray@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251"
@@ -316,6 +323,13 @@ ansi-gray@^0.1.1:
dependencies:
ansi-wrap "0.1.0"
+ansi-red@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c"
+ integrity sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=
+ dependencies:
+ ansi-wrap "0.1.0"
+
ansi-regex@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
@@ -402,6 +416,14 @@ argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
+arr-diff@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a"
+ integrity sha1-aHwydYFjWI/vfeezb6vklesaOZo=
+ dependencies:
+ arr-flatten "^1.0.1"
+ array-slice "^0.2.3"
+
arr-diff@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
@@ -426,6 +448,11 @@ arr-map@^2.0.0, arr-map@^2.0.2:
dependencies:
make-iterator "^1.0.0"
+arr-union@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d"
+ integrity sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=
+
arr-union@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
@@ -456,6 +483,11 @@ array-last@^1.1.1:
dependencies:
is-number "^4.0.0"
+array-slice@^0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5"
+ integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU=
+
array-slice@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4"
@@ -1734,7 +1766,7 @@ colorette@^1.2.2, colorette@^1.3.0:
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.3.0.tgz#ff45d2f0edb244069d3b772adeb04fed38d0a0af"
integrity sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==
-commander@^2.18.0, commander@^2.2.0, commander@^2.8.1:
+commander@^2.18.0, commander@^2.19.0, commander@^2.2.0, commander@^2.8.1:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
@@ -2682,6 +2714,13 @@ ext@^1.1.2:
dependencies:
type "^2.5.0"
+extend-shallow@^1.1.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071"
+ integrity sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=
+ dependencies:
+ kind-of "^1.1.0"
+
extend-shallow@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
@@ -3347,6 +3386,18 @@ gulp-imagemin@^7.1.0:
imagemin-optipng "^7.0.0"
imagemin-svgo "^7.0.0"
+gulp-minify@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/gulp-minify/-/gulp-minify-3.1.0.tgz#9ed9e09f6bfca64e99cd0427bc8e90d44e736770"
+ integrity sha512-ixF41aYg+NQikI8hpoHdEclYcQkbGdXQu1CBdHaU7Epg8H6e8d2jWXw1+rBPgYwl/XpKgjHj7NI6gkhoSNSSAg==
+ dependencies:
+ ansi-colors "^1.0.1"
+ minimatch "^3.0.2"
+ plugin-error "^0.1.2"
+ terser "^3.7.6"
+ through2 "^2.0.3"
+ vinyl "^2.1.0"
+
gulp-postcss@9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/gulp-postcss/-/gulp-postcss-9.0.0.tgz#2ade18809ab475dae743a88bd6501af0b04ee54e"
@@ -4211,6 +4262,11 @@ keyv@3.0.0:
dependencies:
json-buffer "3.0.0"
+kind-of@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44"
+ integrity sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=
+
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
@@ -5191,6 +5247,17 @@ pkg-dir@^4.1.0:
dependencies:
find-up "^4.0.0"
+plugin-error@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace"
+ integrity sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=
+ dependencies:
+ 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"
+
plugin-error@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c"
@@ -6230,6 +6297,14 @@ source-map-support@^0.4.15:
dependencies:
source-map "^0.5.6"
+source-map-support@~0.5.10:
+ version "0.5.21"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
+ integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
source-map-url@^0.4.0:
version "0.4.1"
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
@@ -6240,7 +6315,7 @@ source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6, source-map@^0.5.7:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
-source-map@^0.6.1:
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
@@ -6581,6 +6656,15 @@ tempfile@^2.0.0:
temp-dir "^1.0.0"
uuid "^3.0.1"
+terser@^3.7.6:
+ version "3.17.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2"
+ integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==
+ dependencies:
+ commander "^2.19.0"
+ source-map "~0.6.1"
+ source-map-support "~0.5.10"
+
tfunk@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-4.0.0.tgz#de9399feaf2060901d590b7faad80fcd5443077e"
@@ -6977,7 +7061,7 @@ vinyl-sourcemaps-apply@^0.2.1:
dependencies:
source-map "^0.5.1"
-vinyl@^2.0.0:
+vinyl@^2.0.0, vinyl@^2.1.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974"
integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==