|
1 | 1 | import { GatsbyNode } from "gatsby"; |
2 | 2 | import readingTime from "reading-time"; |
3 | 3 | import * as path from "path"; |
4 | | -import * as fs from "fs"; |
5 | 4 | import { createFilePath } from "gatsby-source-filesystem"; |
6 | 5 | import { generatePostSlug, generateTagSlug, slugs } from "./src/logic/slug"; |
7 | | -import { |
8 | | - artApiAdapter, |
9 | | - blogAuthorsApiAdapter, |
10 | | - blogPostDetailsApiAdapter, |
11 | | - blogPostsApiAdapter, |
12 | | - projectsApiAdapter, |
13 | | -} from "./src/logic/api/api-adapters"; |
14 | 6 |
|
15 | 7 | export const createPages: GatsbyNode["createPages"] = async ({ |
16 | 8 | graphql, |
@@ -100,91 +92,3 @@ export const onCreateNode: GatsbyNode["onCreateNode"] = ({ |
100 | 92 | }); |
101 | 93 | } |
102 | 94 | }; |
103 | | - |
104 | | -export const onPostBuild: GatsbyNode["onPostBuild"] = async ({ graphql }) => { |
105 | | - console.log("onPostBuild: generating API..."); |
106 | | - |
107 | | - const apiBasePath = "/api"; |
108 | | - const apiFolder = `./public${apiBasePath}`; |
109 | | - |
110 | | - if (!fs.existsSync(apiFolder)) { |
111 | | - fs.mkdirSync(apiFolder); |
112 | | - } |
113 | | - |
114 | | - const blogPostsQuery = ( |
115 | | - await graphql<Queries.BlogPostsApiQuery>(` |
116 | | - query BlogPostsApi { |
117 | | - allMarkdownRemark(sort: { frontmatter: { date: DESC } }, limit: 1000) { |
118 | | - edges { |
119 | | - node { |
120 | | - fields { |
121 | | - slug |
122 | | - readingTime { |
123 | | - text |
124 | | - } |
125 | | - } |
126 | | - frontmatter { |
127 | | - title |
128 | | - description |
129 | | - authors |
130 | | - tags |
131 | | - math |
132 | | - date(formatString: "DD MMM YYYY") |
133 | | - image { |
134 | | - publicURL |
135 | | - } |
136 | | - } |
137 | | - html |
138 | | - } |
139 | | - } |
140 | | - } |
141 | | - } |
142 | | - `) |
143 | | - ).data!; |
144 | | - |
145 | | - const imagesApiQuery = ( |
146 | | - await graphql<Queries.ImagesApiQuery>(` |
147 | | - query ImagesApi { |
148 | | - allFile( |
149 | | - filter: { |
150 | | - relativeDirectory: { in: ["projects", "authors", "art"] } |
151 | | - extension: { regex: "/(jpg)|(jpeg)|(png)/" } |
152 | | - } |
153 | | - ) { |
154 | | - edges { |
155 | | - node { |
156 | | - publicURL |
157 | | - name |
158 | | - } |
159 | | - } |
160 | | - } |
161 | | - } |
162 | | - `) |
163 | | - ).data!; |
164 | | - |
165 | | - const authorsApi = blogAuthorsApiAdapter(imagesApiQuery); |
166 | | - const blogPostsApi = blogPostsApiAdapter( |
167 | | - apiBasePath, |
168 | | - blogPostsQuery, |
169 | | - authorsApi, |
170 | | - ); |
171 | | - const blogPostDetailApis = blogPostDetailsApiAdapter( |
172 | | - blogPostsQuery, |
173 | | - authorsApi, |
174 | | - ); |
175 | | - const projectsApi = projectsApiAdapter(imagesApiQuery); |
176 | | - const artApi = artApiAdapter(imagesApiQuery); |
177 | | - |
178 | | - fs.writeFileSync(`${apiFolder}/posts.json`, JSON.stringify(blogPostsApi)); |
179 | | - fs.writeFileSync(`${apiFolder}/authors.json`, JSON.stringify(authorsApi)); |
180 | | - Object.keys(blogPostDetailApis).forEach((key) => { |
181 | | - fs.writeFileSync( |
182 | | - `${apiFolder}/${key}.json`, |
183 | | - JSON.stringify(blogPostDetailApis[key]), |
184 | | - ); |
185 | | - }); |
186 | | - fs.writeFileSync(`${apiFolder}/projects.json`, JSON.stringify(projectsApi)); |
187 | | - fs.writeFileSync(`${apiFolder}/art.json`, JSON.stringify(artApi)); |
188 | | - |
189 | | - console.log("onPostBuild: API generation completed."); |
190 | | -}; |
0 commit comments