aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/hooks.server.ts
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/hooks.server.ts')
-rw-r--r--app/src/hooks.server.ts35
1 files changed, 35 insertions, 0 deletions
diff --git a/app/src/hooks.server.ts b/app/src/hooks.server.ts
new file mode 100644
index 0000000..163f640
--- /dev/null
+++ b/app/src/hooks.server.ts
@@ -0,0 +1,35 @@
+import { minify } from 'html-minifier-terser';
+import { building } from '$app/environment';
+
+const minification_options = {
+ collapseBooleanAttributes: true,
+ collapseWhitespace: true,
+ conservativeCollapse: true,
+ decodeEntities: true,
+ html5: true,
+ ignoreCustomComments: [/^#/],
+ minifyCSS: true,
+ minifyJS: true,
+ removeAttributeQuotes: true,
+ removeComments: false, // some hydration code needs comments, so leave them in
+ removeOptionalTags: true,
+ removeRedundantAttributes: true,
+ removeScriptTypeAttributes: true,
+ removeStyleLinkTypeAttributes: true,
+ sortAttributes: true,
+ sortClassName: true
+};
+
+/** @type {import('@sveltejs/kit').Handle} */
+export async function handle({ event, resolve }) {
+ let page = '';
+
+ return resolve(event, {
+ transformPageChunk: ({ html, done }) => {
+ page += html;
+ if (done) {
+ return building ? minify(page, minification_options) : page;
+ }
+ }
+ });
+} \ No newline at end of file