This commit is contained in:
2017-02-10 00:33:25 +00:00
commit a3e6ce3fb5
99 changed files with 11317 additions and 0 deletions

53
tools/render.js Normal file
View 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;