113 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { defineConfig, passthroughImageService, sharpImageService } from 'astro/config';
 | |
| 
 | |
| import mdx from '@astrojs/mdx';
 | |
| import node from '@astrojs/node';
 | |
| import partytown from '@astrojs/partytown';
 | |
| import react from '@astrojs/react';
 | |
| import sitemap from '@astrojs/sitemap';
 | |
| 
 | |
| import tailwindcss from '@tailwindcss/vite';
 | |
| import icon from 'astro-icon';
 | |
| import swup from '@swup/astro';
 | |
| import rehypePrettyCode from 'rehype-pretty-code';
 | |
| import { transformerCopyButton } from '@rehype-pretty/transformers';
 | |
| 
 | |
| const getSiteURL = () => {
 | |
|   if (process.env.SITE_URL) {
 | |
|     return `https://${process.env.SITE_URL}`;
 | |
|   }
 | |
|   return 'http://localhost:4321';
 | |
| };
 | |
| 
 | |
| export default defineConfig({
 | |
|   site: getSiteURL(),
 | |
| 
 | |
|   image: {
 | |
|     service: {
 | |
|       entrypoint: 'astro/assets/services/sharp',
 | |
|     }
 | |
|   },
 | |
| 
 | |
|   prefetch: true,
 | |
| 
 | |
|   integrations: [
 | |
|     mdx(),
 | |
|     partytown(),
 | |
|     react(),
 | |
|     sitemap(),
 | |
|     icon({
 | |
|       include: {
 | |
|         mdi: ['*'],
 | |
|       },
 | |
|     }),
 | |
|     swup({
 | |
|       theme: 'fade',
 | |
|       native: true,
 | |
|       cache: true,
 | |
|       preload: true,
 | |
|       accessibility: true,
 | |
|       smoothScrolling: true,
 | |
|       morph: ['#nav'],
 | |
|     }),
 | |
|     (await import('@playform/compress')).default({
 | |
|       CSS: true,
 | |
|       JavaScript: true,
 | |
|       HTML: {
 | |
|         'html-minifier-terser': {
 | |
|           collapseWhitespace: true,
 | |
|           minifyCSS: false,
 | |
|           minifyJS: true,
 | |
|         },
 | |
|       },
 | |
|       Image: false,
 | |
|       SVG: true,
 | |
|       Logger: 2,
 | |
|     }),
 | |
|   ],
 | |
| 
 | |
|   markdown: {
 | |
|     syntaxHighlight: false,
 | |
|     rehypePlugins: [
 | |
|       [
 | |
|         rehypePrettyCode,
 | |
|         {
 | |
|           theme: {
 | |
|             light: 'github-light',
 | |
|             dark: 'github-dark-dimmed',
 | |
|           },
 | |
|           keepBackground: false,
 | |
|           transformers: [
 | |
|             transformerCopyButton({
 | |
|               visibility: 'always',
 | |
|               feedbackDuration: 2500,
 | |
|             }),
 | |
|           ],
 | |
|         },
 | |
|       ],
 | |
|     ],
 | |
|   },
 | |
| 
 | |
|   plugins: {
 | |
|     '@tailwindcss/postcss': {},
 | |
|   },
 | |
| 
 | |
|   vite: {
 | |
|     plugins: [tailwindcss()],
 | |
|   },
 | |
| 
 | |
|   output: 'static',
 | |
| 
 | |
|   adapter: node({
 | |
|     mode: 'standalone',
 | |
|   }),
 | |
| 
 | |
|   build: {
 | |
|     // Specifies the directory in the build output where Astro-generated assets (bundled JS and CSS for example) should live.
 | |
|     // see https://docs.astro.build/en/reference/configuration-reference/#buildassets
 | |
|     assets: 'assets',
 | |
|     // see https://docs.astro.build/en/reference/configuration-reference/#buildassetsprefix
 | |
|     assetsPrefix:
 | |
|       !!import.meta.env.S3_ENABLE || !!process.env.S3_ENABLE ? 'https://digitalocean.com' : '',
 | |
|   },
 | |
| });
 |