diff --git a/server/build/webpack.js b/server/build/webpack.js index 99154ddbdb54c6fc0013a30856d383e89e7bf8ef..871cd8c63730b0d61281b58522385f928853db33 100644 --- a/server/build/webpack.js +++ b/server/build/webpack.js @@ -8,7 +8,7 @@ import WatchRemoveEventPlugin from './plugins/watch-remove-event-plugin' import DynamicEntryPlugin from './plugins/dynamic-entry-plugin' import DetachPlugin from './plugins/detach-plugin' -export default async function createCompiler (dir, { hotReload = false } = {}) { +export default async function createCompiler (dir, { hotReload = false, dev = false } = {}) { dir = resolve(dir) const pages = await glob('pages/**/*.js', { cwd: dir }) @@ -34,28 +34,36 @@ export default async function createCompiler (dir, { hotReload = false } = {}) { const nodeModulesDir = join(__dirname, '..', '..', '..', 'node_modules') const plugins = [ - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': JSON.stringify('production') - }), new WriteFilePlugin({ exitOnErrors: false, log: false, // required not to cache removed files useHashIndex: false }) - ].concat(hotReload ? [ - new webpack.HotModuleReplacementPlugin(), - new DetachPlugin(), - new DynamicEntryPlugin(), - new UnlinkFilePlugin(), - new WatchRemoveEventPlugin(), - new WatchPagesPlugin(dir) - ] : [ - new webpack.optimize.UglifyJsPlugin({ - compress: { warnings: false }, - sourceMap: false - }) - ]) + ] + + if (!dev) { + plugins.push( + new webpack.DefinePlugin({ + 'process.env.NODE_ENV': JSON.stringify('production') + }), + new webpack.optimize.UglifyJsPlugin({ + compress: { warnings: false }, + sourceMap: false + }) + ) + } + + if (hotReload) { + plugins.push( + new webpack.HotModuleReplacementPlugin(), + new DetachPlugin(), + new DynamicEntryPlugin(), + new UnlinkFilePlugin(), + new WatchRemoveEventPlugin(), + new WatchPagesPlugin(dir) + ) + } const babelRuntimePath = require.resolve('babel-runtime/package') .replace(/[\\\/]package\.json$/, '') diff --git a/server/hot-reloader.js b/server/hot-reloader.js index eb776e7feaf36ef8d58a36b543d0df584530ef38..87227a1d7dd08a58403d3dbe064aa340aa6047ba 100644 --- a/server/hot-reloader.js +++ b/server/hot-reloader.js @@ -4,8 +4,9 @@ import webpack from './build/webpack' import read from './read' export default class HotReloader { - constructor (dir) { + constructor (dir, dev = false) { this.dir = dir + this.dev = dev this.server = null this.initialized = false this.stats = null @@ -22,7 +23,7 @@ export default class HotReloader { } async prepareServer () { - const compiler = await webpack(this.dir, { hotReload: true }) + const compiler = await webpack(this.dir, { hotReload: true, dev: this.dev }) compiler.plugin('after-emit', (compilation, callback) => { const { assets } = compilation diff --git a/server/index.js b/server/index.js index d56ab30a111c0f75aee6281e99f61a78eac67e97..378976b12f488abb3c3a18b718bd557be19609d2 100644 --- a/server/index.js +++ b/server/index.js @@ -11,7 +11,7 @@ export default class Server { constructor ({ dir = '.', dev = false, hotReload = false }) { this.dir = resolve(dir) this.dev = dev - this.hotReloader = hotReload ? new HotReloader(this.dir) : null + this.hotReloader = hotReload ? new HotReloader(this.dir, this.dev) : null this.router = new Router() this.http = http.createServer((req, res) => {