this repo has no description
1import { load } from "https://deno.land/std@0.224.0/dotenv/mod.ts";
2
3import lume from "lume/mod.ts";
4import jsx_preact from "lume/plugins/jsx_preact.ts";
5
6import attributes from "lume/plugins/attributes.ts";
7import base_path from "lume/plugins/base_path.ts";
8import date from "lume/plugins/date.ts";
9import favicon from "lume/plugins/favicon.ts";
10import katex from "lume/plugins/katex.ts";
11import mdx from "lume/plugins/mdx.ts";
12import metas from "lume/plugins/metas.ts";
13import nunjucks from "lume/plugins/nunjucks.ts";
14import reading_info from "lume/plugins/reading_info.ts";
15import sass from "lume/plugins/sass.ts";
16import sitemap from "lume/plugins/sitemap.ts";
17import slugify_urls from "lume/plugins/slugify_urls.ts";
18import terser from "lume/plugins/terser.ts";
19import toml from "lume/plugins/toml.ts";
20
21// mdx plugins
22import rehypeKatex from "npm:rehype-katex";
23import remarkMath from "npm:remark-math";
24
25// custom plugins
26import robots from "./src/robots.ts";
27
28// components
29import Header from "./src/_components/Header.tsx";
30
31await load({
32 export: true,
33});
34
35let location = Deno.env.get("site");
36if (location == undefined) {
37 location = "http://localhost/";
38} else {
39 location = `https://${location}/`;
40}
41
42const site = lume({
43 src: "./src",
44 location: new URL(location),
45});
46
47site.use(robots({
48 env_var: "DARKVISITORS_API_KEY",
49 agent_types: [
50 "AI Data Scraper", "AI Assistant", "AI Search Crawler", "Undocumented AI Agent"
51 ],
52}));
53
54site.use(jsx_preact());
55
56site.use(attributes());
57site.use(base_path());
58site.use(date());
59site.use(favicon());
60site.use(katex());
61site.use(
62 mdx({
63 remarkPlugins: [remarkMath],
64 rehypePlugins: [rehypeKatex],
65 components: {
66 Header: Header,
67 },
68 }),
69);
70site.use(metas());
71site.use(nunjucks());
72site.use(reading_info());
73site.use(sass());
74site.use(sitemap(/* Options */));
75site.use(
76 slugify_urls({
77 extensions: [".html"],
78 lowercase: true,
79 alphanumeric: true,
80 separator: "-",
81 }),
82);
83site.use(terser(/* Options */));
84site.use(toml());
85
86site.copy("assets");
87site.copy("404.html")
88site.copy("well-known", ".well-known")
89
90export default site;