mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
This commit is contained in:
parent
e0455823a0
commit
880b71047b
|
@ -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) => {
|
||||
|
|
Loading…
Reference in a new issue