generator-foo
Version:
Foo project scaffold generator based on generator-jam3
73 lines (62 loc) • 2.38 kB
JavaScript
/* eslint-disable */
var path = require( 'path' )
var express = require( 'express' )
var webpack = require( 'webpack' )
var config = require( '../config' )
var proxyMiddleware = require( 'http-proxy-middleware' )
var webpackConfig = process.env.NODE_ENV === 'testing'
? require( './webpack.prod.conf' )
: require( './webpack.dev.conf' )
// default port where dev server listens for incoming traffic
var port = process.env.PORT || config.dev.port
// Define HTTP proxies to your custom API backend
// https://github.com/chimurai/http-proxy-middleware
var proxyTable = config.dev.proxyTable
var app = express()
var compiler = webpack( webpackConfig )
var devMiddleware = require( 'webpack-dev-middleware' )( compiler, {
publicPath : webpackConfig.output.publicPath,
noInfo : true,
historyApiFallback: true,
stats : {
colors : true,
chunks : false,
version : true,
timings : true,
chunkModules: true
}
} )
var hotMiddleware = require( 'webpack-hot-middleware' )( compiler )
// force page reload when html-webpack-plugin template changes
compiler.plugin( 'compilation', function ( compilation ) {
compilation.plugin( 'html-webpack-plugin-after-emit', function ( data, cb ) {
hotMiddleware.publish( { action: 'reload' } )
cb()
} )
} )
// proxy api requests
Object.keys( proxyTable ).forEach( function ( context ) {
var options = proxyTable[ context ]
if ( typeof options === 'string' ) {
options = { target: options }
}
app.use( proxyMiddleware( context, options ) )
} )
// handle fallback for HTML5 history API
app.use( require( 'connect-history-api-fallback' )() )
// serve webpack bundle output
app.use( devMiddleware )
// enable hot-reload and state-preserving
// compilation error display
app.use( hotMiddleware )
// serve pure static assets
//var staticPath = path.posix.join(config.build.assetsPublicPath, config.build.assetsSubDirectory)
var staticPath = path.posix.join( "/", config.build.assetsSubDirectory )
app.use( staticPath, express.static( './static' ) )
module.exports = app.listen( port, '0.0.0.0', function ( err ) {
if ( err ) {
console.log( err )
return
}
console.log( 'Listening at http://localhost:' + port + '\n' )
} )