feat: minify html + js

This commit is contained in:
Cory Dransfeldt 2024-08-28 19:55:49 -07:00
parent d1b6b8cbea
commit ee53cbdb26
No known key found for this signature in database
6 changed files with 320 additions and 8 deletions

View file

@ -1,5 +1,6 @@
import fs from 'fs'
import path from 'path'
import { minify } from 'terser'
const errorPages = ['404', '500', '1000', 'broken', 'error', 'js-challenge', 'not-allowed', 'rate-limit']
@ -28,3 +29,26 @@ export const copyErrorPages = () => {
})
})
}
export const minifyJsComponents = async () => {
const scriptsDir = '_site/assets/scripts'
const minifyJsFilesInDir = async (dir) => {
const files = fs.readdirSync(dir)
for (const fileName of files) {
const filePath = path.join(dir, fileName)
const stat = fs.statSync(filePath)
if (stat.isDirectory()) {
await minifyJsFilesInDir(filePath)
} else if (fileName.endsWith('.js')) {
const minified = await minify(fs.readFileSync(filePath, 'utf8'))
fs.writeFileSync(filePath, minified.code)
} else {
console.log(`⚠ No .js file to minify in ${filePath}`)
}
}
}
await minifyJsFilesInDir(scriptsDir)
}

View file

@ -24,6 +24,9 @@ export default {
formatNumber: (number) => number.toLocaleString('en-US'),
shuffleArray,
sanitizeMediaString,
sanitizeHtml: (html) => sanitizeHtml(html, {
textFilter: (text) => text.replace(/"/g, '')
}),
// navigation
isLinkActive: (category, page) => page.includes(category) && page.split('/').filter(a => a !== '').length <= 1,