61 lines
1.5 KiB
JavaScript
61 lines
1.5 KiB
JavaScript
import webpack from 'webpack'
|
|
import webpackMiddleware from 'webpack-dev-middleware'
|
|
import webpackHotMiddleware from 'webpack-hot-middleware'
|
|
|
|
import express from 'express'
|
|
import http from 'http'
|
|
import path from 'path'
|
|
|
|
import config from '../config'
|
|
import webpackConfig from '../webpack/webpack.config'
|
|
|
|
const app = express()
|
|
|
|
// Webpack dev server
|
|
if (config.globals.__DEV__) {
|
|
const compiler = webpack(webpackConfig)
|
|
const devMiddleware = webpackMiddleware(compiler, {
|
|
publicPath: webpackConfig.output.publicPath,
|
|
stats: {
|
|
colors: true,
|
|
hash: false,
|
|
timings: true,
|
|
chunks: false,
|
|
chunkModules: false,
|
|
modules: false
|
|
},
|
|
watchOptions: {
|
|
aggregateTimeout: 300,
|
|
poll: 300
|
|
}
|
|
})
|
|
app.use(devMiddleware)
|
|
app.use(webpackHotMiddleware(compiler))
|
|
|
|
app.listen(config.webpack_port, config.server_host, function (err) {
|
|
if (err) console.log(err)
|
|
console.log('WebpackDevServer listening at localhost:' + config.webpack_port)
|
|
})
|
|
|
|
const fs = devMiddleware.fileSystem
|
|
app.get('*', function (req, res) {
|
|
const file = fs.readFileSync(path.join(compiler.outputPath, 'index.html'))
|
|
res.send(file.toString())
|
|
})
|
|
}
|
|
else {
|
|
app.get('*', (req, res) => res.sendFile(path.join(webpackConfig.output.path, 'index.html')))
|
|
}
|
|
|
|
app.use(express.static(config.path_base))
|
|
|
|
const server = http.createServer(app)
|
|
const port = config.server_port
|
|
|
|
server.listen(port, function (err) {
|
|
if (err) {
|
|
console.log(err)
|
|
}
|
|
console.log('Server running on port ' + port)
|
|
})
|