-
Notifications
You must be signed in to change notification settings - Fork 0
/
next.config.js
82 lines (74 loc) · 2.39 KB
/
next.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
// next.config.js
const withImages = require("next-images");
const projectsData = require("./data.js");
const { PHASE_DEVELOPMENT_SERVER } = require("next/constants");
const glob = require("glob");
module.exports = (phase, { defaultConfig }) =>
withImages({
webpack: function (config) {
config.module.rules.push({
test: /\.md$/,
use: "raw-loader",
});
return config;
},
env: {
EMAIL_API: process.env.EMAIL_API
},
exportPathMap: async function (defaultPathMap, { dev, dir, outDir, distDir, buildId }) {
const paths = {
"/": { page: "/" },
"/blog": { page: "/blog" },
"/learn/web-development": {
page: "/learn/web-development",
},
"/learn/game-development": {
page: "/learn/game-development",
},
"/learn/mobile-development": {
page: "/learn/mobile-development",
},
"/learn/machine-learning-and-ai": {
page: "/learn/machine-learning-and-ai",
},
};
if (phase !== PHASE_DEVELOPMENT_SERVER) {
projectsData[Object.keys(projectsData)[0]].map((project) => {
project.category.map((t) => {
const slug =
t === "web-dev"
? "web-development"
: t === "mob-dev"
? "mobile-development"
: t === "game-dev"
? "game-development"
: "machine-learning-and-ai";
let urlTitle = project.title.toLowerCase().split(" ").join("-");
paths[`/learn/${slug}/project/${urlTitle}-${project.id}`] = {
page: `/learn/${slug}/project/[id]`,
query: { id: `${urlTitle}-${project.id}` },
};
});
});
}
const blogs = glob.sync("posts/**/*.md");
//remove path and extension to leave filename only
const blogSlugs = blogs.map((file) =>
file.split("/")[1].replace(/ /g, "-").slice(0, -3).trim()
);
//add each blog to the routes obj
blogSlugs.forEach((blog) => {
paths[`/blog/${blog}`] = { page: "/blog/[slug]", query: { slug: blog } };
});
return paths;
},
// experimental: {
// modern: true,
// async rewrites () {
// return [
// {source: '/sitemap.xml', destination: '/api/sitemap'},
// ]
// },
// catchAllRouting: true
// }
});