-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathastro.config.ts
More file actions
97 lines (87 loc) · 2.46 KB
/
astro.config.ts
File metadata and controls
97 lines (87 loc) · 2.46 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 type { AstroIntegration } from "astro";
import react from "@astrojs/react";
import sitemap from "@astrojs/sitemap";
import tailwindcss from "@tailwindcss/vite";
import compressor from "astro-compressor";
import { defineConfig } from "astro/config";
import path from "node:path";
import { fileURLToPath } from "node:url";
import { createIndex } from "pagefind";
function pagefind(): AstroIntegration {
let outDir: string;
return {
hooks: {
"astro:build:done": async ({ logger }) => {
if (!outDir) {
logger.warn(
"astro-pagefind couldn't reliably determine the output directory. Search index will not be built.",
);
return;
}
const { errors: createErrors, index } = await createIndex();
if (!index) {
logger.error("Pagefind failed to create index");
for (const e of createErrors) logger.error(e);
return;
}
const { errors: addErrors, page_count } = await index.addDirectory({
path: outDir,
});
if (addErrors.length > 0) {
logger.error("Pagefind failed to index files");
for (const e of addErrors) logger.error(e);
return;
} else {
logger.info(`Pagefind indexed ${page_count} pages`);
}
const { errors: writeErrors, outputPath } = await index.writeFiles({
outputPath: path.join(outDir, "pagefind"),
});
if (writeErrors.length > 0) {
logger.error("Pagefind failed to write index");
for (const e of writeErrors) logger.error(e);
return;
} else {
logger.info(`Pagefind wrote index to ${outputPath}`);
}
},
"astro:config:setup": ({ config }) => {
outDir = fileURLToPath(config.outDir);
},
},
name: "pagefind",
};
}
// https://astro.build/config
export default defineConfig({
build: {
inlineStylesheets: "always",
},
devToolbar: {
enabled: false,
},
image: {
service: {
config: {
kernel: "mks2021",
},
entrypoint: "astro/assets/services/sharp",
},
},
integrations: [
react(),
sitemap({
filter: (page) => page !== "https://www.frankshowalter.com/gone/",
}),
pagefind(),
compressor(),
],
site: "https://www.frankshowalter.com",
trailingSlash: "always",
vite: {
optimizeDeps: {
exclude: ["fsevents", "@takumi-rs/core"],
},
plugins: [tailwindcss()],
},
});