socialnetworknews-web

A open-source Paper.li clone
git clone git://archive.git.mtrnord.blog/SocialNetworkNews/socialnetworknews-web.git
Log | Files | Refs | README | LICENSE

server.ts (1371B)


      1 // These are important and needed before anything else
      2 import 'zone.js/dist/zone-node';
      3 import 'reflect-metadata';
      4 
      5 import { enableProdMode } from '@angular/core';
      6 
      7 import * as express from 'express';
      8 import { join } from 'path';
      9 
     10 // Faster server renders w/ Prod mode (dev mode never needed)
     11 enableProdMode();
     12 
     13 // Express server
     14 const app = express();
     15 
     16 const PORT = process.env.PORT || 4000;
     17 const DIST_FOLDER = join(process.cwd(), 'dist');
     18 
     19 // * NOTE :: leave this as require() since this file is built Dynamically from webpack
     20 const { AppServerModuleNgFactory, LAZY_MODULE_MAP } = require('./dist/server/main');
     21 
     22 // Express Engine
     23 import { ngExpressEngine } from '@nguniversal/express-engine';
     24 // Import module map for lazy loading
     25 import { provideModuleMap } from '@nguniversal/module-map-ngfactory-loader';
     26 
     27 app.engine('html', ngExpressEngine({
     28   bootstrap: AppServerModuleNgFactory,
     29   providers: [
     30     provideModuleMap(LAZY_MODULE_MAP)
     31   ]
     32 }));
     33 
     34 app.set('view engine', 'html');
     35 app.set('views', join(DIST_FOLDER, 'browser'));
     36 
     37 // Server static files from /browser
     38 app.get('*.*', express.static(join(DIST_FOLDER, 'browser')));
     39 
     40 // All regular routes use the Universal engine
     41 app.get('*', (req, res) => {
     42   res.render('index', { req });
     43 });
     44 
     45 // Start up the Node server
     46 app.listen(PORT, () => {
     47   console.log(`Node server listening on http://localhost:${PORT}`);
     48 });