UNPKG

dev-toolkit

Version:

Universal Development Toolkit for React Veterans

45 lines (39 loc) 1.36 kB
import express from 'express'; import expressHandlebars from 'express-handlebars'; import path from 'path'; import fs from 'fs'; import React from 'react'; import { renderToString } from 'react-dom/server'; import clearModule from 'clear-module'; import { isDev } from 'dev-toolkit/settings'; const serverPort = process.env.SERVER_PORT || 3000; const serverViews = path.resolve(process.cwd(), 'src/server/views'); const rootComponentPath = path.resolve(process.cwd(), 'src/client/RootComponent'); export default new class { constructor() { this.express = express(); this.express.engine('hbs', expressHandlebars.create().engine); this.express.set('views', serverViews).set('view engine', 'hbs'); } start({ assets, buildFolder }) { if (isDev) { this.express.use((req, res) => { if (isDev) { clearModule(rootComponentPath); } import(rootComponentPath).then(module => { const RootComponent = module.default; res.status(200).render('template', { assets, renderedHtml: renderToString(<RootComponent />), }); }); }); } else { this.express.use(express.static(buildFolder)); } this.serverInstance = this.express.listen(serverPort, () => { console.log(`Server is listening on port ${serverPort}`); }); } }();