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' : '',
|
|
},
|
|
});
|