File tree 3 files changed +58
-2
lines changed
3 files changed +58
-2
lines changed Original file line number Diff line number Diff line change 4
4
"dev" : " next dev" ,
5
5
"build" : " next build" ,
6
6
"start" : " next start" ,
7
- "lint" : " next lint"
7
+ "lint" : " next lint" ,
8
+ "postbuild" : " NODE_OPTIONS='--experimental-json-modules' node ./scripts/generate-sitemap.mjs"
8
9
},
9
10
"dependencies" : {
10
11
"next" : " 12.1.0" ,
12
+ "prop-types" : " ^15.8.1" ,
11
13
"react" : " 17.0.2" ,
12
- "react-dom" : " 17.0.2"
14
+ "react-dom" : " 17.0.2" ,
15
+ "react-feather" : " ^2.0.10" ,
16
+ "react-parallax" : " ^3.5.1" ,
17
+ "styled-components" : " ^5.3.5" ,
18
+ "prettier" : " ^2.5.1" ,
19
+ "globby" : " 13.1.2"
13
20
},
14
21
"devDependencies" : {
15
22
"eslint" : " 8.9.0" ,
Original file line number Diff line number Diff line change
1
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
2
+ <urlset xmlns =" http://www.sitemaps.org/schemas/sitemap/0.9" > </urlset >
Original file line number Diff line number Diff line change
1
+ import { writeFileSync } from 'fs'
2
+
3
+ import { globby } from 'globby'
4
+ import prettier from 'prettier'
5
+
6
+ async function generate ( ) {
7
+ const prettierConfig = await prettier . resolveConfig ( './.prettierrc.js' )
8
+ const pages = await globby ( [
9
+ 'pages/*.tsx' ,
10
+ 'data/**/*.mdx' ,
11
+ '!data/*.mdx' ,
12
+ '!pages/_*.tsx' ,
13
+ '!pages/api' ,
14
+ '!pages/404.tsx' ,
15
+ ] )
16
+
17
+ const sitemap = `
18
+ <?xml version="1.0" encoding="UTF-8"?>
19
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
20
+ ${ pages
21
+ . map ( page => {
22
+ const path = page
23
+ . replace ( 'pages' , '' )
24
+ . replace ( 'data' , '' )
25
+ . replace ( '.tsx' , '' )
26
+ . replace ( '.mdx' , '' )
27
+ const route = path === '/index' ? '' : path
28
+ return `
29
+ <url>
30
+ <loc>${ `https://cretu.dev${ route } ` } </loc>
31
+ </url>
32
+ `
33
+ } )
34
+ . join ( '' ) }
35
+ </urlset>
36
+ `
37
+
38
+ const formatted = prettier . format ( sitemap , {
39
+ ...prettierConfig ,
40
+ parser : 'html' ,
41
+ } )
42
+
43
+ // eslint-disable-next-line no-sync
44
+ writeFileSync ( 'public/sitemap.xml' , formatted )
45
+ }
46
+
47
+ generate ( )
You can’t perform that action at this time.
0 commit comments