diff --git a/minify-build.js b/minify-build.js index 22ecbee..bd51d3d 100644 --- a/minify-build.js +++ b/minify-build.js @@ -51,7 +51,14 @@ async function createOptimizedBuild() { 'video-container', 'photo-gallery', 'photo-item', - 'dark' + 'dark', + // Responsive navigation classes + 'desktop-nav', + 'mobile-nav', + 'dropdown', + // Button classes + 'secondary', + 'outline' ], deep: [ /^--pico-/, @@ -60,7 +67,12 @@ async function createOptimizedBuild() { /:hover/, /:focus/, /:active/, - /:visited/ + /:visited/, + // Dropdown and interactive states + /\[open\]/, + /\[role=/, + /details/, + /summary/ ], // Keep base typography selectors that are essential for proper font rendering greedy: [ @@ -78,7 +90,14 @@ async function createOptimizedBuild() { /^a$/, /^a:/, // Add anchor pseudo-classes like a:hover, a:focus /^a\./, // Add anchor with classes like a.secondary - /^a\[/ // Add anchor with attributes like a[role=button] + /^a\[/, // Add anchor with attributes like a[role=button] + // Dropdown and button elements + /^details$/, + /^summary$/, + /^button$/, + /^button:/, + /^button\./, + /^button\[/ ] }, variables: true, @@ -109,20 +128,21 @@ async function createOptimizedBuild() { }) ]).process(combinedCSS, { from: undefined }); - await fs.writeFile('dist/css/styles.css', minifiedCSS.css); - - // Also minify custom site styles + // Combine with custom site styles const customCSS = await fs.readFile('public/site-styles/style.css', 'utf8'); - const minifiedCustomCSS = await postcss([ + const combinedWithCustomCSS = minifiedCSS.css + '\n' + customCSS; + + // Minify the combined CSS bundle + const finalMinifiedCSS = await postcss([ cssnano({ preset: ['default', { discardComments: { removeAll: true }, normalizeWhitespace: true }] }) - ]).process(customCSS, { from: undefined }); + ]).process(combinedWithCustomCSS, { from: undefined }); - await fs.writeFile('dist/site-styles/style.css', minifiedCustomCSS.css); + await fs.writeFile('dist/css/bundle.css', finalMinifiedCSS.css); // Step 3: JavaScript Bundling and Minification console.log('📦 Step 3: Bundling and minifying JavaScript...'); @@ -148,9 +168,9 @@ async function createOptimizedBuild() { } // Calculate compression results - const originalCSSSize = (await fs.stat('public/css/pico.green.min.css')).size + - (await fs.stat('public/css/pico.colors.min.css')).size; - const optimizedCSSSize = (await fs.stat('dist/css/styles.css')).size; + const originalCSSSize = (await fs.stat('public/css/pico.jade.min.css')).size + + (await fs.stat('public/css/pico.min.css')).size; + const optimizedCSSSize = (await fs.stat('dist/css/bundle.css')).size; const cssReduction = ((originalCSSSize - optimizedCSSSize) / originalCSSSize * 100).toFixed(1); const originalHTMLSize = (await fs.stat('public/index.html')).size + @@ -238,7 +258,7 @@ async function bundleAndMinifyJS() { hoist_vars: false, if_return: true, join_vars: true, - cascade: true, + side_effects: true }, mangle: { @@ -271,10 +291,9 @@ async function minifyHTMLFile(inputPath, outputPath) { // Update CSS references for production and add script reference let updatedHTML = html - .replace(//g, '') - .replace(//g, '') + .replace(//g, '') .replace(//g, - '') + '') .replace(/<\/body>/g, '