dont do prerendering inside here anymore, automatically make webp images
This commit is contained in:
parent
5e19902709
commit
1a77079b7b
10
default.nix
10
default.nix
@ -1,4 +1,4 @@
|
|||||||
{ pkgs, google-chrome, symlinkJoin, stdenv, elmPackages, libjpeg, optipng, pngquant, ... }:
|
{ pkgs, google-chrome, symlinkJoin, stdenv, elmPackages, libjpeg, optipng, pngquant, libwebp, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
pnpm2nix = pkgs.callPackage (builtins.fetchGit {
|
pnpm2nix = pkgs.callPackage (builtins.fetchGit {
|
||||||
@ -65,6 +65,14 @@ let
|
|||||||
ln -s ${libjpeg}/bin/jpegtran $HOME/node_modules/jpegtran-bin/vendor/jpegtran
|
ln -s ${libjpeg}/bin/jpegtran $HOME/node_modules/jpegtran-bin/vendor/jpegtran
|
||||||
'';
|
'';
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
cwebp-bin = (drv: drv.overrideAttrs(oldAttrs: {
|
||||||
|
buildPhase = ''
|
||||||
|
mkdir -p $HOME/node_modules/cwebp-bin/vendor/
|
||||||
|
ln -s ${libwebp}/bin/cwebp $HOME/node_modules/cwebp-bin/vendor/cwebp
|
||||||
|
'';
|
||||||
|
}));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -7,9 +7,9 @@
|
|||||||
"favicons-webpack-plugin": "^1.0.2",
|
"favicons-webpack-plugin": "^1.0.2",
|
||||||
"html-loader": "^0.5.5",
|
"html-loader": "^0.5.5",
|
||||||
"html-webpack-plugin": "^3.2.0",
|
"html-webpack-plugin": "^3.2.0",
|
||||||
|
"imagemin-webp-webpack-plugin": "^3.3.1",
|
||||||
"imagemin-webpack-plugin": "^2.4.2",
|
"imagemin-webpack-plugin": "^2.4.2",
|
||||||
"jsdom": "^15.2.1",
|
"jsdom": "^15.2.1",
|
||||||
"prerender-spa-plugin": "^3.4.0",
|
|
||||||
"style-loader": "^1.1.3",
|
"style-loader": "^1.1.3",
|
||||||
"tempy": "^0.3.0",
|
"tempy": "^0.3.0",
|
||||||
"terser-webpack-plugin": "^2.3.5",
|
"terser-webpack-plugin": "^2.3.5",
|
||||||
|
65
pnpm-lock.yaml
generated
65
pnpm-lock.yaml
generated
@ -6,6 +6,7 @@ dependencies:
|
|||||||
favicons-webpack-plugin: 1.0.2_webpack@4.41.6
|
favicons-webpack-plugin: 1.0.2_webpack@4.41.6
|
||||||
html-loader: 0.5.5
|
html-loader: 0.5.5
|
||||||
html-webpack-plugin: 3.2.0_webpack@4.41.6
|
html-webpack-plugin: 3.2.0_webpack@4.41.6
|
||||||
|
imagemin-webp-webpack-plugin: 3.3.1
|
||||||
imagemin-webpack-plugin: 2.4.2
|
imagemin-webpack-plugin: 2.4.2
|
||||||
jsdom: 15.2.1
|
jsdom: 15.2.1
|
||||||
prerender-spa-plugin: 3.4.0
|
prerender-spa-plugin: 3.4.0
|
||||||
@ -108,7 +109,7 @@ packages:
|
|||||||
'@jimp/custom': 0.5.4
|
'@jimp/custom': 0.5.4
|
||||||
'@jimp/utils': 0.5.0
|
'@jimp/utils': 0.5.0
|
||||||
core-js: 2.6.11
|
core-js: 2.6.11
|
||||||
jpeg-js: 0.3.6
|
jpeg-js: 0.3.7
|
||||||
dev: false
|
dev: false
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@jimp/custom': '>=0.3.5'
|
'@jimp/custom': '>=0.3.5'
|
||||||
@ -1927,7 +1928,7 @@ packages:
|
|||||||
icss-utils: 4.1.1
|
icss-utils: 4.1.1
|
||||||
loader-utils: 1.2.3
|
loader-utils: 1.2.3
|
||||||
normalize-path: 3.0.0
|
normalize-path: 3.0.0
|
||||||
postcss: 7.0.26
|
postcss: 7.0.27
|
||||||
postcss-modules-extract-imports: 2.0.0
|
postcss-modules-extract-imports: 2.0.0
|
||||||
postcss-modules-local-by-default: 3.0.2
|
postcss-modules-local-by-default: 3.0.2
|
||||||
postcss-modules-scope: 2.1.1
|
postcss-modules-scope: 2.1.1
|
||||||
@ -2022,6 +2023,18 @@ packages:
|
|||||||
node: '>=0.10.0'
|
node: '>=0.10.0'
|
||||||
resolution:
|
resolution:
|
||||||
integrity: sha1-mI3zP+qxke95mmE2nddsF635V+o=
|
integrity: sha1-mI3zP+qxke95mmE2nddsF635V+o=
|
||||||
|
/cwebp-bin/5.1.0:
|
||||||
|
dependencies:
|
||||||
|
bin-build: 3.0.0
|
||||||
|
bin-wrapper: 4.1.0
|
||||||
|
logalot: 2.1.0
|
||||||
|
dev: false
|
||||||
|
engines:
|
||||||
|
node: '>=6'
|
||||||
|
hasBin: true
|
||||||
|
requiresBuild: true
|
||||||
|
resolution:
|
||||||
|
integrity: sha512-BsPKStaNr98zfxwejWWLIGELbPERULJoD2v5ijvpeutSAGsegX7gmABgnkRK7MUucCPROXXfaPqkLAwI509JzA==
|
||||||
/cyclist/1.0.1:
|
/cyclist/1.0.1:
|
||||||
dev: false
|
dev: false
|
||||||
resolution:
|
resolution:
|
||||||
@ -2082,7 +2095,7 @@ packages:
|
|||||||
integrity: sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
|
integrity: sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
|
||||||
/decompress-response/4.2.1:
|
/decompress-response/4.2.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
mimic-response: 2.0.0
|
mimic-response: 2.1.0
|
||||||
dev: false
|
dev: false
|
||||||
engines:
|
engines:
|
||||||
node: '>=8'
|
node: '>=8'
|
||||||
@ -3868,7 +3881,7 @@ packages:
|
|||||||
integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
||||||
/icss-utils/4.1.1:
|
/icss-utils/4.1.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss: 7.0.26
|
postcss: 7.0.27
|
||||||
dev: false
|
dev: false
|
||||||
engines:
|
engines:
|
||||||
node: '>= 6'
|
node: '>= 6'
|
||||||
@ -3950,6 +3963,23 @@ packages:
|
|||||||
node: '>=6'
|
node: '>=6'
|
||||||
resolution:
|
resolution:
|
||||||
integrity: sha512-+iGJFaPIMx8TjFW6zN+EkOhlqcemdL7F3N3Y0wODvV2kCUBuUtZK7DRZc1+Zfu4U2W/lTMUyx2G8YMOrZntIWg==
|
integrity: sha512-+iGJFaPIMx8TjFW6zN+EkOhlqcemdL7F3N3Y0wODvV2kCUBuUtZK7DRZc1+Zfu4U2W/lTMUyx2G8YMOrZntIWg==
|
||||||
|
/imagemin-webp-webpack-plugin/3.3.1:
|
||||||
|
dependencies:
|
||||||
|
imagemin: 6.1.0
|
||||||
|
imagemin-webp: 5.1.0
|
||||||
|
dev: false
|
||||||
|
resolution:
|
||||||
|
integrity: sha512-9AZE61DfOVOa8Yl4kiezTEBN3O9cmTbpvAueOAoxrU3lvaQWgDgfl7Z8CLHI+tglwbt//e5/RbF2ZQu5TKHDGQ==
|
||||||
|
/imagemin-webp/5.1.0:
|
||||||
|
dependencies:
|
||||||
|
cwebp-bin: 5.1.0
|
||||||
|
exec-buffer: 3.2.0
|
||||||
|
is-cwebp-readable: 2.0.1
|
||||||
|
dev: false
|
||||||
|
engines:
|
||||||
|
node: '>=6'
|
||||||
|
resolution:
|
||||||
|
integrity: sha512-BsPTpobgbDPFBBsI3UflnU/cpIVa15qInEDBcYBw16qI/6XiB4vDF/dGp9l4aM3pfFDDYqR0mANMcKpBD7wbCw==
|
||||||
/imagemin-webpack-plugin/2.4.2:
|
/imagemin-webpack-plugin/2.4.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/imagemin-gifsicle': 5.2.0
|
'@types/imagemin-gifsicle': 5.2.0
|
||||||
@ -4173,6 +4203,12 @@ packages:
|
|||||||
node: '>= 0.4'
|
node: '>= 0.4'
|
||||||
resolution:
|
resolution:
|
||||||
integrity: sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==
|
integrity: sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==
|
||||||
|
/is-cwebp-readable/2.0.1:
|
||||||
|
dependencies:
|
||||||
|
file-type: 4.4.0
|
||||||
|
dev: false
|
||||||
|
resolution:
|
||||||
|
integrity: sha1-r7k7DAq9CiUQEBauM66ort+SbSY=
|
||||||
/is-data-descriptor/0.1.4:
|
/is-data-descriptor/0.1.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
kind-of: 3.2.2
|
kind-of: 3.2.2
|
||||||
@ -4498,10 +4534,10 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
resolution:
|
resolution:
|
||||||
integrity: sha1-U+RI7J0mPmgyZkZ+lELSxaLvVII=
|
integrity: sha1-U+RI7J0mPmgyZkZ+lELSxaLvVII=
|
||||||
/jpeg-js/0.3.6:
|
/jpeg-js/0.3.7:
|
||||||
dev: false
|
dev: false
|
||||||
resolution:
|
resolution:
|
||||||
integrity: sha512-MUj2XlMB8kpe+8DJUGH/3UJm4XpI8XEgZQ+CiHDeyrGoKPdW/8FJv6ku+3UiYm5Fz3CWaL+iXmD8Q4Ap6aC1Jw==
|
integrity: sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==
|
||||||
/jpegtran-bin/4.0.0:
|
/jpegtran-bin/4.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
bin-build: 3.0.0
|
bin-build: 3.0.0
|
||||||
@ -5073,12 +5109,12 @@ packages:
|
|||||||
node: '>=4'
|
node: '>=4'
|
||||||
resolution:
|
resolution:
|
||||||
integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
|
integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
|
||||||
/mimic-response/2.0.0:
|
/mimic-response/2.1.0:
|
||||||
dev: false
|
dev: false
|
||||||
engines:
|
engines:
|
||||||
node: '>=8'
|
node: '>=8'
|
||||||
resolution:
|
resolution:
|
||||||
integrity: sha512-8ilDoEapqA4uQ3TwS0jakGONKXVJqpy+RpM+3b7pLdOjghCrEiGp9SRkFbUHAmZW9vdnrENWHjaweIoTIJExSQ==
|
integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==
|
||||||
/min-document/2.19.0:
|
/min-document/2.19.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
dom-walk: 0.1.1
|
dom-walk: 0.1.1
|
||||||
@ -6000,7 +6036,7 @@ packages:
|
|||||||
integrity: sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
|
integrity: sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
|
||||||
/postcss-modules-extract-imports/2.0.0:
|
/postcss-modules-extract-imports/2.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss: 7.0.26
|
postcss: 7.0.27
|
||||||
dev: false
|
dev: false
|
||||||
engines:
|
engines:
|
||||||
node: '>= 6'
|
node: '>= 6'
|
||||||
@ -6009,7 +6045,7 @@ packages:
|
|||||||
/postcss-modules-local-by-default/3.0.2:
|
/postcss-modules-local-by-default/3.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
icss-utils: 4.1.1
|
icss-utils: 4.1.1
|
||||||
postcss: 7.0.26
|
postcss: 7.0.27
|
||||||
postcss-selector-parser: 6.0.2
|
postcss-selector-parser: 6.0.2
|
||||||
postcss-value-parser: 4.0.2
|
postcss-value-parser: 4.0.2
|
||||||
dev: false
|
dev: false
|
||||||
@ -6019,7 +6055,7 @@ packages:
|
|||||||
integrity: sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==
|
integrity: sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==
|
||||||
/postcss-modules-scope/2.1.1:
|
/postcss-modules-scope/2.1.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss: 7.0.26
|
postcss: 7.0.27
|
||||||
postcss-selector-parser: 6.0.2
|
postcss-selector-parser: 6.0.2
|
||||||
dev: false
|
dev: false
|
||||||
engines:
|
engines:
|
||||||
@ -6029,7 +6065,7 @@ packages:
|
|||||||
/postcss-modules-values/3.0.0:
|
/postcss-modules-values/3.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
icss-utils: 4.1.1
|
icss-utils: 4.1.1
|
||||||
postcss: 7.0.26
|
postcss: 7.0.27
|
||||||
dev: false
|
dev: false
|
||||||
resolution:
|
resolution:
|
||||||
integrity: sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==
|
integrity: sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==
|
||||||
@ -6047,7 +6083,7 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
resolution:
|
resolution:
|
||||||
integrity: sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==
|
integrity: sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==
|
||||||
/postcss/7.0.26:
|
/postcss/7.0.27:
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk: 2.4.2
|
chalk: 2.4.2
|
||||||
source-map: 0.6.1
|
source-map: 0.6.1
|
||||||
@ -6056,7 +6092,7 @@ packages:
|
|||||||
engines:
|
engines:
|
||||||
node: '>=6.0.0'
|
node: '>=6.0.0'
|
||||||
resolution:
|
resolution:
|
||||||
integrity: sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA==
|
integrity: sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==
|
||||||
/prebuild-install/5.3.3:
|
/prebuild-install/5.3.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
detect-libc: 1.0.3
|
detect-libc: 1.0.3
|
||||||
@ -8499,6 +8535,7 @@ specifiers:
|
|||||||
favicons-webpack-plugin: ^1.0.2
|
favicons-webpack-plugin: ^1.0.2
|
||||||
html-loader: ^0.5.5
|
html-loader: ^0.5.5
|
||||||
html-webpack-plugin: ^3.2.0
|
html-webpack-plugin: ^3.2.0
|
||||||
|
imagemin-webp-webpack-plugin: ^3.3.1
|
||||||
imagemin-webpack-plugin: ^2.4.2
|
imagemin-webpack-plugin: ^2.4.2
|
||||||
jsdom: ^15.2.1
|
jsdom: ^15.2.1
|
||||||
prerender-spa-plugin: ^3.4.0
|
prerender-spa-plugin: ^3.4.0
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
const path = require('path')
|
const path = require('path')
|
||||||
const TerserPlugin = require('terser-webpack-plugin')
|
const TerserPlugin = require('terser-webpack-plugin')
|
||||||
const HtmlWebpackPlugin = require('html-webpack-plugin')
|
const HtmlWebpackPlugin = require('html-webpack-plugin')
|
||||||
const PrerenderSPAPlugin = require('prerender-spa-plugin')
|
|
||||||
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer
|
|
||||||
const CopyPlugin = require('copy-webpack-plugin')
|
const CopyPlugin = require('copy-webpack-plugin')
|
||||||
const { InjectManifest } = require('workbox-webpack-plugin')
|
const { InjectManifest } = require('workbox-webpack-plugin')
|
||||||
const ImageminPlugin = require('imagemin-webpack-plugin').default
|
const ImageminPlugin = require('imagemin-webpack-plugin').default
|
||||||
|
const ImageminWebpWebpackPlugin = require('imagemin-webp-webpack-plugin')
|
||||||
const FaviconsWebpackPlugin = require('favicons-webpack-plugin')
|
const FaviconsWebpackPlugin = require('favicons-webpack-plugin')
|
||||||
const { JSDOM } = require('jsdom')
|
const { JSDOM } = require('jsdom')
|
||||||
const tempy = require('tempy')
|
const tempy = require('tempy')
|
||||||
@ -18,8 +17,6 @@ const magicFile = (text) => {
|
|||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
// const magicAppend = (orig, text, sep = '\n') => magicFile(fs.readFileSync(orig) + sep + text)
|
|
||||||
|
|
||||||
const jsMin = {
|
const jsMin = {
|
||||||
mangle: true,
|
mangle: true,
|
||||||
compress: {
|
compress: {
|
||||||
@ -50,37 +47,7 @@ const htmlMin = {
|
|||||||
sortClassName: true,
|
sortClassName: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
prerenderOpts = (width, height, name) => ({
|
|
||||||
outputDir: path.join(__dirname, 'dist', 'prerender', name),
|
|
||||||
staticDir: path.join(__dirname, 'dist'),
|
|
||||||
routes: ROUTES,
|
|
||||||
minify: htmlMin,
|
|
||||||
renderer: new Renderer({
|
|
||||||
renderAfterTime: 300,
|
|
||||||
viewport: {
|
|
||||||
width: width,
|
|
||||||
height: height,
|
|
||||||
deviceScaleFactor: 1,
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
postProcess(renderedRoute) {
|
|
||||||
const dom = new JSDOM(renderedRoute.html, { runScripts: 'outside-only' })
|
|
||||||
dom.window.eval(`
|
|
||||||
const wandTarget = document.createElement('script')
|
|
||||||
wandTarget.src = '/wand.js'
|
|
||||||
document.body.appendChild(wandTarget)
|
|
||||||
`)
|
|
||||||
return {
|
|
||||||
...renderedRoute,
|
|
||||||
html: dom.serialize(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const productionPlugins = [
|
const productionPlugins = [
|
||||||
new PrerenderSPAPlugin(prerenderOpts(1920, 1080, 'desktop')),
|
|
||||||
new PrerenderSPAPlugin(prerenderOpts(375, 667, 'phone')),
|
|
||||||
new PrerenderSPAPlugin(prerenderOpts(768, 1024, 'tablet')),
|
|
||||||
new InjectManifest({
|
new InjectManifest({
|
||||||
importWorkboxFrom: 'local',
|
importWorkboxFrom: 'local',
|
||||||
swSrc: magicFile(`
|
swSrc: magicFile(`
|
||||||
@ -96,6 +63,25 @@ const productionPlugins = [
|
|||||||
jpegtran: { progressive: true },
|
jpegtran: { progressive: true },
|
||||||
svgo: null,
|
svgo: null,
|
||||||
}),
|
}),
|
||||||
|
new ImageminWebpWebpackPlugin({
|
||||||
|
config: [{
|
||||||
|
test: /\.jpe?g/,
|
||||||
|
options: {
|
||||||
|
force: true,
|
||||||
|
quality: 75
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
test: /\.png/,
|
||||||
|
options: {
|
||||||
|
force: true,
|
||||||
|
lossless: true
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
overrideExtension: false,
|
||||||
|
detailedLogs: false,
|
||||||
|
silent: true,
|
||||||
|
strict: true,
|
||||||
|
}),
|
||||||
new FaviconsWebpackPlugin({
|
new FaviconsWebpackPlugin({
|
||||||
logo: path.join(__dirname, 'data', 'images', 'icon.png'),
|
logo: path.join(__dirname, 'data', 'images', 'icon.png'),
|
||||||
inject: false, // manually in our template for now cos its fuckd
|
inject: false, // manually in our template for now cos its fuckd
|
||||||
|
Loading…
Reference in New Issue
Block a user