-
Notifications
You must be signed in to change notification settings - Fork 359
/
next.config.js
86 lines (77 loc) · 2.7 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
83
84
85
86
const withImages = require("next-images");
const projectsData = require("./public/data.json");
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
},
images: {
disableStaticImages: true
},
typescript:{
ignoreBuildErrors: true
},
exportPathMap: async function (defaultPathMap, { dev, dir, outDir, distDir, buildId }) {
const paths = {
"/": { page: "/", query: { __nextDefaultLocale: '' } },
"/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.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("-");
let imageUrl = project.imageUrl; // Add this line to get the image URL from project data
paths[`/learn/${slug}/project/${urlTitle}-${project.id}`] = {
page: `/learn/${slug}/project/[id]`,
query: { id: `${urlTitle}-${project.id}`, imageUrl }, // Pass imageUrl as query parameter
};
});
});
}
const blogs = glob.sync("posts/**/*.md");
// Filter out any invalid file paths or directories
const validBlogs = blogs.filter((file) => {
return file.includes("/") && file.endsWith(".md");
});
// Extract blog slugs from valid file paths
const blogSlugs = validBlogs.map((file) => {
const parts = file.split("/");
const fileName = parts[parts.length - 1];
return fileName.slice(0, -3); // Remove the file extension (.md)
});
// Add each blog to the paths object
blogSlugs.forEach((blog) => {
paths[`/blog/${blog}`] = { page: "/blog/[slug]", query: { slug: blog } };
});
return paths;
},
});