-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathastro.config.mjs
58 lines (56 loc) · 1.93 KB
/
astro.config.mjs
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
import mdx from '@astrojs/mdx';
import sitemap from '@astrojs/sitemap';
import solid from '@astrojs/solid-js';
import tailwind from '@astrojs/tailwind';
import { pluginCollapsibleSections } from '@expressive-code/plugin-collapsible-sections';
import { pluginLineNumbers } from '@expressive-code/plugin-line-numbers';
import expressiveCode from 'astro-expressive-code';
import { defineConfig } from 'astro/config';
import remarkDirective from 'remark-directive';
import { visit } from 'unist-util-visit';
import { remarkAsides } from './src/remarkPlugin/remark-asides.js';
import { remarkModifiedTime } from './src/remarkPlugin/remark-modified-time.mjs';
import { resetRemark } from './src/remarkPlugin/reset-remark.js';
import { remarkGithubCard } from './src/remarkPlugin/remark-github-card.js';
function customRehypeLazyLoadImage() {
return function (tree) {
visit(tree, function (node) {
if (node.tagName === 'img') {
node.properties['data-src'] = node.properties.src;
node.properties.src = '/spinner.gif';
node.properties['data-alt'] = node.properties.alt;
node.properties.alt = 'default';
}
});
};
}
export default defineConfig({
site: 'https://arias9306.github.io/',
integrations: [
sitemap(),
tailwind(),
solid(),
expressiveCode({
plugins: [pluginLineNumbers(), pluginCollapsibleSections()],
themes: ['github-dark', 'github-light'],
styleOverrides: {
codeFontFamily: 'jetbrains-mono',
uiFontFamily: 'jetbrains-mono',
},
themeCssSelector: (theme) => `[data-theme="${theme.type}"]`,
}),
mdx(),
],
markdown: {
remarkPlugins: [remarkModifiedTime, resetRemark, remarkDirective, remarkAsides({}), remarkGithubCard()],
rehypePlugins: [customRehypeLazyLoadImage],
shikiConfig: {
themes: {
light: 'github-light',
dark: 'github-dark',
},
defaultColor: false,
wrap: true,
},
},
});