UNPKG

nodram

Version:
89 lines (53 loc) 2.13 kB
// polyfills have to be first import 'angular2-universal-polyfills'; import 'ts-helpers'; import './helpers/__workaround.node'; //temporary until 2.1.1 things are patched in Core import 'angular2-universal-polyfills'; import * as http from 'http'; import * as path from 'path'; import * as express from 'express'; import * as compress from "compression"; import * as morgan from 'morgan'; import {createEngine} from 'angular2-express-engine'; import {RenderRouter} from "./routers/RenderRouter"; import {MainModule} from "./node.module"; import {enableProdMode} from "@angular/core"; // will change depending on your app const ROOT = path.join(path.resolve(__dirname, '..')); const VIEW_DIR = path.join(path.resolve(__dirname, './views')); export class WebServer { private engineConfig: Object; constructor() { //Set the engine config; this.setEngineConfig(); // enable prod for faster renders enableProdMode(); } public start(){ let app = express(); let server = http.createServer(app); if (process.env.NODE_ENV === "development") { app.use(morgan('combined')); } if (process.env.NODE_ENV === 'production') { app.use(compress()); } // 1. set up Angular Universal to be the rendering engine for Express app.engine('.html', createEngine(this.engineConfig)); app.set('views', VIEW_DIR); app.set('view engine', 'html'); // Serve static files // app.use('/assets', express.static(path.join(__dirname, 'assets'), {maxAge: 30})); app.use(express.static(path.join(ROOT, 'static'), {index: false})); //Create SITE Routes let renderRoute = new RenderRouter().createRoutes(); app.use("/",renderRoute); return server; } private setEngineConfig(){ let engineConfig : any = { ngModule: MainModule, precompile: true, }; this.engineConfig = engineConfig; } }