// https://nuxt.com/docs/api/configuration/nuxt-config import fs from 'fs/promises' import chalk from 'chalk'; import imagemin from 'imagemin'; import imageminPngquant from 'imagemin-pngquant'; export default defineNuxtConfig({ hooks: { 'nitro:build:public-assets': async (nitro) => { console.log(`😈 custom hook imagemin in ${nitro.options.output.publicDir}`) const output_path = nitro.options.output.publicDir const filelist = await fs.readdir(output_path, { recursive: true }); for (let index = 0; index < filelist.length; index++) { const element = filelist[index]; const elementFile = await fs.lstat(`${output_path}/${element}`) if (element.startsWith('_nuxt')) continue if (elementFile.isFile()) { if (element.endsWith('.png')) { const dest = `${output_path}/${element.split('/').slice(0, -1).join('/')}` const res = await imagemin([`${output_path}/${element}`], { destination: dest, plugins: [ imageminPngquant({ quality: [0.6, 0.8] }) ] }) if (res.length) { console.log(chalk.gray(` compress PNG ${output_path}/${element}`)) } } } } } }, app: { pageTransition: { name: 'page', mode: 'out-in' }, head: { viewport: 'width=device-width, initial-scale=1', htmlAttrs: { lang: 'ru', }, }, }, ssr: true, modules: [ '@nuxtjs/tailwindcss', "@nuxt/image", "nuxt-icon", "nuxt-svgo", '@tresjs/nuxt', 'nuxt-anchorscroll', '@nuxtjs/robots', ], runtimeConfig: { public: { apiBase: 'https://mns.kustarshina.ru/kp', imgBase: 'https://mns.kustarshina.ru', baseUrl: '', }, }, routeRules: { '/index.html': { redirect: '/' }, '/index.php': { redirect: '/' }, }, // nitro: { // prerender: { // crawlLinks: true // }, // }, vite: { assetsInclude: ['**/*.glb', '**/*.gltf'], build: { minify: 'esbuild' }, }, robots: { rules: { UserAgent: '*', Disallow: '/', } } })