-
Notifications
You must be signed in to change notification settings - Fork 0
/
astro.config.ts
117 lines (114 loc) · 2.74 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
112
113
114
115
116
117
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 { createMdxConfig } from "./src/config/mdx.config";
import { redirects } from "./src/config/redirects.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,
i18n: {
defaultLocale,
locales: locales as Writable<typeof locales>,
routing: "manual",
},
integrations: [
icon({
/** @see https://www.astroicon.dev/reference/configuration/#include */
include: {
lucide: [
"chevron-down",
"globe",
"mail",
"menu",
"message-circle",
"podcast",
"search",
"twitter",
"x",
],
simpleIcons: [
"bluesky",
"facebook",
"instagram",
"linkedin",
"mastodon",
"orcid",
"podcast",
"x",
"website",
"youtube",
],
},
}),
/** Only needed to make the astro jsx runtime work correctly. */
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/keystatic/compile-mdx.ts` instead of astro's built-in markdown processor. */
// // @ts-expect-error Astro types are incomplete.
// markdown: {
// ...(await createMdxConfig()),
// gfm: false,
// smartypants: false,
// syntaxHighlight: false,
// },
prefetch: {
defaultStrategy: "hover",
prefetchAll: true,
},
redirects: {
"/admin": {
destination: env.PUBLIC_APP_BASE_PATH
? `${env.PUBLIC_APP_BASE_PATH.replace(/\/$/, "")}/keystatic`
: "/keystatic",
status: 307,
},
...redirects,
},
scopedStyleStrategy: "where",
server: {
/** Required by keystatic. */
host: "127.0.0.1",
port: 3000,
},
site: env.PUBLIC_APP_BASE_URL,
vite: {
ssr: {
noExternal: ["react-tweet"],
},
},
});