-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathastro.config.ts
111 lines (108 loc) · 2.71 KB
/
astro.config.ts
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import mdx from "@astrojs/mdx";
import node from "@astrojs/node";
import react from "@astrojs/react";
import sitemap from "@astrojs/sitemap";
import solidJs from "@astrojs/solid-js";
import { defineConfig } from "astro/config";
import icon from "astro-icon";
import type { Writable } from "type-fest";
import { loadEnv } from "vite";
import { defaultLocale, locales } from "./src/config/i18n.config";
// import { createConfig as createMdxConfig } from "./src/config/mdx.config";
const env = loadEnv(import.meta.env.MODE, process.cwd(), "");
export default defineConfig({
/**
* When switching to static site generation, place an empty `index.astro` file in
* the `src/pages` folder, so `astro` will generate a redirect to the default locale
* via `<meta http-equiv="refresh" content="0;url=/en/">`.
*/
adapter: node({
mode: "standalone",
}),
base: env.PUBLIC_APP_BASE_PATH,
experimental: {
// actions: true,
// contentCollectionCache: true,
// env: {},
// serverIslands: true,
},
i18n: {
defaultLocale,
locales: locales as Writable<typeof locales>,
routing: "manual",
},
integrations: [
icon({
/** @see https://www.astroicon.dev/reference/configuration/#include */
include: {
lucide: ["chevron-down", "menu", "message-circle", "search", "square-arrow-left", "x"],
simpleIcons: [],
},
svgoOptions: {
multipass: true,
plugins: [
{
name: "preset-default",
params: {
overrides: {
removeViewBox: false,
},
},
},
],
},
}),
mdx(),
/**
* @see https://docs.astro.build/en/guides/integrations-guide/solid-js/#combining-multiple-jsx-frameworks
* @see https://github.com/Thinkmill/keystatic/discussions/951
*/
react({
include: ["**/content/**", "**/keystatic/**"],
}),
sitemap({
i18n: {
defaultLocale,
locales: Object.fromEntries(
locales.map((locale) => {
return [locale, locale];
}),
),
},
}),
solidJs({
exclude: ["**/content/**", "**/keystatic/**"],
}),
],
/** Use `@/lib/content/get-mdx-content.ts` instead of astro's built-in markdown processor. */
// // @ts-expect-error Astro types are incomplete.
// markdown: {
// ...(await createMdxConfig(defaultLocale)),
// gfm: false,
// smartypants: false,
// syntaxHighlight: false,
// },
output: "hybrid",
prefetch: {
defaultStrategy: "hover",
prefetchAll: true,
},
redirects: {
"/admin": {
destination: env.PUBLIC_APP_BASE_PATH
? `${env.PUBLIC_APP_BASE_PATH.replace(/\/$/, "")}/keystatic`
: "/keystatic",
status: 307,
},
},
scopedStyleStrategy: "where",
security: {
checkOrigin: true,
},
server: {
/** Required by keystatic. */
host: "127.0.0.1",
port: 3000,
},
site: env.PUBLIC_APP_BASE_URL,
});