-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathastro.config.mjs
More file actions
97 lines (92 loc) · 2.53 KB
/
astro.config.mjs
File metadata and controls
97 lines (92 loc) · 2.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import { defineConfig, passthroughImageService } from "astro/config";
import path from "path";
import fs from "fs";
import node from "@astrojs/node";
import netlify from "@astrojs/netlify/functions";
import cloudflare from "@astrojs/cloudflare";
import mdx from "@astrojs/mdx";
import sitemap from "@astrojs/sitemap";
import solid from "@astrojs/solid-js";
import purgecss from "astro-purgecss";
import obsidian from "@astro.hrry.dev/obsidian";
import ViteYaml from "@modyfi/vite-plugin-yaml";
import compress from "@astro.hrry.dev/compress";
import { gardenBasePath } from "./src/config";
const domain = fs.readFileSync("public/CNAME").toString().trim();
const site = `https://${domain}`;
const outDir = "./dist";
const siteMapFilter = new Set(["admin"]);
// check for "false" so that netlify is default
const isNetlify = process.env.NETLIFY === "false" ? false : true;
const isCloudflare = process.env.CLOUDFLARE_ACCOUNT_ID ? true : false;
let output = process.env.ASTRO_OUTPUT || "static";
// https://astro.build/config
export default defineConfig({
site: site,
outDir: outDir,
output: output,
// adapter: isCloudflare
// ? cloudflare()
// : isNetlify
// ? netlify({
// imageCDN: false,
// })
// : output === "server"
// ? node({ mode: "middleware" })
// : undefined,
compressHTML: true,
build: {
assets: "a",
inlineStylesheets: "auto",
},
markdown: {
syntaxHighlight: "prism",
},
image: {
service: passthroughImageService(),
},
server: {
port: 3000,
},
redirects: {
"/help": { destination: "/about/index.html", status: 301 },
},
vite: {
plugins: [ViteYaml()],
build: {
rollupOptions: {
output: {
assetFileNames: "a/[hash][extname]",
},
},
// https://github.com/Ernxst/astro-cssbundle
//cssCodeSplit: true,
},
},
integrations: [
mdx(),
solid(),
// https://purgecss.com/configuration.html
purgecss(),
sitemap({
customPages: [],
filter: (page) => !siteMapFilter.has(path.basename(page)),
}),
compress({
Path: outDir,
HTML: {
removeComments: true,
removeAttributeQuotes: false,
// sorting does not effect size but can improve text compression
sortAttributes: true,
sortClassName: true,
removeRedundantAttributes: true,
},
Image: {
gif: false, // compressing gifs removes the animation
},
logger: 0,
}),
obsidian({ urlBase: gardenBasePath, baseDir: "./content" }),
],
});