mdx-deck
Version:
MDX-based presentation decks
45 lines (39 loc) • 1.15 kB
JavaScript
const path = require('path')
const http = require('http')
const connect = require('connect')
const webpack = require('webpack')
const history = require('connect-history-api-fallback')
const serveStatic = require('serve-static')
const devMiddleware = require('webpack-dev-middleware')
const hotMiddleware = require('webpack-hot-middleware')
const createConfig = require('./config')
module.exports = async (opts = {}) => {
const config = createConfig(opts)
config.entry.unshift('webpack-hot-middleware/client')
config.plugins.push(new webpack.HotModuleReplacementPlugin())
config.mode = 'development'
const app = connect()
const compiler = webpack(config)
app.use(history())
app.use(serveStatic(opts.dirname))
app.use(
devMiddleware(compiler, {
stats: 'errors-only',
logLevel: 'error',
publicPath: '/',
})
)
app.use(
hotMiddleware(compiler, {
log: false,
})
)
return new Promise(resolve => {
const server = http.createServer(app)
compiler.hooks.done.tap('mdx-deck', () => {
resolve(server)
})
const port = Number(opts.port)
server.listen(port)
})
}