-
Notifications
You must be signed in to change notification settings - Fork 15
/
gridsome.config.js
125 lines (122 loc) · 3.47 KB
/
gridsome.config.js
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
118
119
120
121
122
123
124
125
// This is where project configuration and plugin options are located.
// Learn more: https://gridsome.org/docs/config
// Changes here requires a server restart.
// To restart press CTRL + C in terminal and run `gridsome develop`
module.exports = {
siteName: "Dan Vega",
siteUrl: "https://www.danvega.dev",
siteDescription: "Personal blog of Dan Vega",
icon: "src/img/danvega-favicon.png",
templates: {
Post: "/blog/:year/:month/:day/:slug",
Tag: "/tag/:title",
Newsletter: ["/newsletter/:issue","/newsletter/:slug"]
},
plugins: [
{
use: "@gridsome/source-filesystem",
options: {
path: "blog/**/*.md",
typeName: "Post",
refs: {
tags: {
typeName: "Tag",
create: true,
},
},
resolveAbsolutePaths: true,
remark: {
autolinkClassName: "fas fa-hashtag",
externalLinksTarget: "_blank",
externalLinksRel: ["nofollow", "noopener", "noreferrer"],
plugins: [
["gridsome-plugin-remark-shiki",{theme: "nord",skipInline: true}],
["gridsome-plugin-remark-twitter",{ omitScript: true,}],
["gridsome-plugin-remark-codesandbox", {}],
['gridsome-plugin-remark-youtube', {}],
],
},
},
},
{
use: "@gridsome/source-filesystem",
options: {
path: "newsletter/**/*.md",
typeName: "Newsletter",
resolveAbsolutePaths: true,
remark: {
autolinkHeadings: false,
plugins: [
["gridsome-plugin-remark-twitter", {}],
['gridsome-plugin-remark-youtube', {}],
["gridsome-plugin-remark-shiki",{theme: "nord",skipInline: true}],
],
},
},
},
{
use: "gridsome-plugin-rss",
options: {
contentTypeName: "Post",
feedOptions: {
title: "Dan Vega",
feed_url: "https://danvega.dev/rss.xml",
site_url: "https://danvega.dev",
},
feedItemOptions: (node) => ({
title: node.title,
description: node.excerpt,
url: getPostURL(node.date, node.slug),
author: node.author,
date: node.date,
custom_elements: [
{
published: node.date?.toString(),
},
],
}),
output: {
dir: "./static",
name: "rss.xml",
},
},
},
{
use: "@gridsome/plugin-sitemap",
options: {
cacheTime: 600000, // default
config: {
"/blog/*": {
changefreq: "daily",
priority: 0.5,
},
"/tag/*": {
changefreq: "daily",
priority: 0.7,
},
"/newsletter/*": {
changefreq: "weekly",
priority: 0.9,
},
},
},
},
{
use: 'gridsome-plugin-sentry',
options: {
dsn: process.env.SENTURY_DSN,
attachProps: true, // defaults to true
logErrors: process.env.NODE_ENV === 'development' // defaults to false, see below for further info
}
}
],
};
function getPostURL(date, slug) {
const createdOn = new Date(date);
const year = createdOn.getFullYear();
const month = `${
createdOn.getMonth() + 1 < 10 ? "0" : ""
}${createdOn.getMonth() + 1}`;
const day = `${createdOn.getDate() < 10 ? "0" : ""}${createdOn.getDate()}`;
return `https://www.danvega.dev/blog/${year}/${month}/${day}/${slug}`;
}