npm install --save-dev @babel/node
npm install prettier
// 아래 것 option
npx update-browserslist-db@latest
npm install caniuse-lite
// src>sitemapGernerate.js
// commonJS
const fs = require('fs');
const prettier = require('prettier');
// ECMAScript 모듈(ESM), module type 이면 위 2줄대신 아래 두줄 이용
//import fs from 'fs';
//import prettier from 'prettier';
// 비동기 함수
async function generateSitemap() {
// 오늘 날짜를 YYYY-MM-DD 형식으로 생성
const SitemapGeneratedDate = new Date().toISOString().slice(0, 10);
const DOMAIN = 'https://2ok.kr';
// 사이트맵에 포함할 페이지 목록
let pages = ['/', '/geoposition'];
pages = pages.map(page => DOMAIN + page);
// 각 페이지에 대한 XML URL 항목을 생성
const pageSitemap = pages.map(page => `
<url>
<loc>${page}</loc>
<lastmod>${SitemapGeneratedDate}</lastmod>
<changefreq>weekly</changefreq>
<priority>${page === 'https://2ok.kr' ? 1 : 0.8}</priority>
</url>
`).join('');
const generateSitemap = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
${pageSitemap}
</urlset>`;
// XML을 예쁘게 정리
const formattedSitemap = await prettier.format(generateSitemap, { parser: 'html' });
// 생성된 사이트맵을 파일로 저장
fs.writeFileSync('./public/sitemap.xml', formattedSitemap, 'utf8');
}
generateSitemap();
// src>sitemapGernerate.js
const fs = require('fs');
const prettier = require('prettier');
// 오늘 날짜를 YYYY-MM-DD 형식으로 생성
const SitemapGeneratedDate = new Date().toISOString().slice(0, 10);
const DOMAIN = 'https://2ok.kr';
// HTML 문서를 정돈하는 함수
const formatting = target => prettier.format(target, { parser: 'html' });
// 사이트맵에 포함할 페이지 목록
let pages = [
'/',
'/geoposition',
];
pages = pages.map(page => DOMAIN + page);
// 각 페이지에 대한 XML URL 항목을 생성
const pageSitemap = pages
.map(
page => `
<url>
<loc>${page}</loc>
<lastmod>${SitemapGeneratedDate}</lastmod>
<changefreq>weekly</changefreq>
<priority>${page === 'https://2ok.kr' ? 1 : 0.8}</priority>
</url>
`
)
.join('');
const generateSitemap = `
<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
${pageSitemap}
</urlset>`;
// XML을 예쁘게 정리
const formattedSitemap = formatting(generateSitemap);
// 생성된 사이트맵을 파일로 저장
fs.writeFileSync('./public/sitemap.xml', formattedSitemap, 'utf8');
위 둘다 sitemap.xml 을 만들어 주는 파일입니다. 위의 것은 비동기 처리한 것입니다. 둘중에 하나 사용하면 됩니다.
- package.json 파일에
"scripts": {
...
...
"sitemap": "babel-node ./src/sitemapGenerate.js"
},
그리고 아래 코드를 실행
npm run sitemap
public > sitemap.xmp 파일이 생김
<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<!-- created with Free Online Sitemap Generator www.xml-sitemaps.com -->
<url>
<loc>https://www.2ok.kr/</loc>
<lastmod>2024-05-13T11:49:24+00:00</lastmod>
</url>
<url>
<loc>https://map.2ok.kr/</loc>
<lastmod>2024-05-13T11:49:24+00:00</lastmod>
</url>
<url>
<loc>https://2ok.kr/mountains/북한산</loc>
<lastmod>2024-05-13T11:49:24+00:00</lastmod>
</url>
<url>
<loc>https://2ok.kr/geoposition</loc>
<lastmod>2024-05-13T11:49:24+00:00</lastmod>
</url>
</urlset>