react-easy-seo
Version:
A Creative Solution For Your React Seo Problems.
51 lines (42 loc) • 2.17 kB
JavaScript
const fs=require('fs-extra');
const path=require('path')
current_dir = process.cwd()
const siteData = require(current_dir+'/src/sitemetadata.json')
function startScript(){
const routes = []
for (const data in siteData) {
routes.push(data)
}
var metadata = ''
var htmlTemplate = fs.readFileSync(path.resolve(current_dir+'/build/', 'index.html'), 'utf8')
fs.emptyDirSync(current_dir+'/output')
fs.copySync(current_dir + '/build', current_dir +'/output')
for (const route in routes) {
if(routes[route] === "/404/"){continue}
const dir =current_dir+ "/output" + routes[route]
fs.mkdirSync(dir, { recursive: true });
var pageMetadata = '<html lang="en"><head>'
for (const meta in siteData[routes[route]]) {
if(meta==='article'){continue}
pageMetadata = pageMetadata.concat( `<meta name="${meta}" content="${siteData[routes[route]][meta]}"></meta>`)
}
pageMetadata = pageMetadata.concat(`<title>${siteData[routes[route]]['title']}</title>`)
if (siteData[routes[route]]['article']){
htmlTemplate = htmlTemplate.replace('<div id="root"></div>', `<div id="root"><p>${siteData[routes[route]]['article']}</p></div>`)
}
htmlTemplate = htmlTemplate.replace('<html lang="en"><head>', pageMetadata)
fs.writeFileSync(dir + 'index.html', htmlTemplate)
}
function make404Page(){
var htmlTemplate = fs.readFileSync(path.resolve(current_dir + '/build/', 'index.html'), 'utf8')
var pageMetadata = '<html lang="en"><head>'
const title=siteData['/404/']['title']
const description = siteData['/404/']['description']
pageMetadata = pageMetadata.concat(`<meta name="title" content="${title}"></meta>`)
pageMetadata = pageMetadata.concat(`<meta name="description" content="${description}"></meta>`)
htmlTemplate = htmlTemplate.replace('<html lang="en"><head>', pageMetadata)
fs.writeFileSync(current_dir + '/404.html', htmlTemplate)
}
make404Page()
}
exports.startScript = startScript