🔥
This commit is contained in:
53
tools/render.js
Normal file
53
tools/render.js
Normal file
@@ -0,0 +1,53 @@
|
||||
import path from 'path';
|
||||
import fetch from 'node-fetch';
|
||||
import { writeFile, makeDir } from './lib/fs';
|
||||
import runServer from './runServer';
|
||||
|
||||
// Enter your paths here which you want to render as static
|
||||
// Example:
|
||||
// const routes = [
|
||||
// '/', // => build/public/index.html
|
||||
// '/page', // => build/public/page.html
|
||||
// '/page/', // => build/public/page/index.html
|
||||
// '/page/name', // => build/public/page/name.html
|
||||
// '/page/name/', // => build/public/page/name/index.html
|
||||
// ];
|
||||
const routes = [
|
||||
'/',
|
||||
'/contact',
|
||||
'/login',
|
||||
'/register',
|
||||
'/about',
|
||||
'/privacy',
|
||||
'/404', // https://help.github.com/articles/creating-a-custom-404-page-for-your-github-pages-site/
|
||||
];
|
||||
|
||||
async function render() {
|
||||
const server = await runServer();
|
||||
|
||||
// add dynamic routes
|
||||
// const products = await fetch(`http://${server.host}/api/products`).then(res => res.json());
|
||||
// products.forEach(product => routes.push(
|
||||
// `/product/${product.uri}`,
|
||||
// `/product/${product.uri}/specs`
|
||||
// ));
|
||||
|
||||
await Promise.all(routes.map(async (route, index) => {
|
||||
const url = `http://${server.host}${route}`;
|
||||
const fileName = route.endsWith('/') ? 'index.html' : `${path.basename(route, '.html')}.html`;
|
||||
const dirName = path.join('build/public', route.endsWith('/') ? route : path.dirname(route));
|
||||
const dist = path.join(dirName, fileName);
|
||||
const timeStart = new Date();
|
||||
const response = await fetch(url);
|
||||
const timeEnd = new Date();
|
||||
const text = await response.text();
|
||||
await makeDir(dirName);
|
||||
await writeFile(dist, text);
|
||||
const time = timeEnd.getTime() - timeStart.getTime();
|
||||
console.log(`#${index + 1} ${dist} => ${response.status} ${response.statusText} (${time} ms)`);
|
||||
}));
|
||||
|
||||
server.kill('SIGTERM');
|
||||
}
|
||||
|
||||
export default render;
|
||||
Reference in New Issue
Block a user