提交 880b7104 编写于 作者: C Chris Cunniff 提交者: Naoyuki Kanezawa

fixes #175, no longer sets process.env.NODE_ENV='production' or runs uglify in next dev mode (#274)

上级 e0455823
......@@ -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$/, '')
......
......@@ -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
......
......@@ -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) => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册