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 DynamicEntryPlugin from './plugins/dynamic-entry-plugin'
|
||||||
import DetachPlugin from './plugins/detach-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)
|
dir = resolve(dir)
|
||||||
|
|
||||||
const pages = await glob('pages/**/*.js', { cwd: 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 nodeModulesDir = join(__dirname, '..', '..', '..', 'node_modules')
|
||||||
|
|
||||||
const plugins = [
|
const plugins = [
|
||||||
new webpack.DefinePlugin({
|
|
||||||
'process.env.NODE_ENV': JSON.stringify('production')
|
|
||||||
}),
|
|
||||||
new WriteFilePlugin({
|
new WriteFilePlugin({
|
||||||
exitOnErrors: false,
|
exitOnErrors: false,
|
||||||
log: false,
|
log: false,
|
||||||
// required not to cache removed files
|
// required not to cache removed files
|
||||||
useHashIndex: false
|
useHashIndex: false
|
||||||
})
|
})
|
||||||
].concat(hotReload ? [
|
]
|
||||||
new webpack.HotModuleReplacementPlugin(),
|
|
||||||
new DetachPlugin(),
|
if (!dev) {
|
||||||
new DynamicEntryPlugin(),
|
plugins.push(
|
||||||
new UnlinkFilePlugin(),
|
new webpack.DefinePlugin({
|
||||||
new WatchRemoveEventPlugin(),
|
'process.env.NODE_ENV': JSON.stringify('production')
|
||||||
new WatchPagesPlugin(dir)
|
}),
|
||||||
] : [
|
new webpack.optimize.UglifyJsPlugin({
|
||||||
new webpack.optimize.UglifyJsPlugin({
|
compress: { warnings: false },
|
||||||
compress: { warnings: false },
|
sourceMap: 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')
|
const babelRuntimePath = require.resolve('babel-runtime/package')
|
||||||
.replace(/[\\\/]package\.json$/, '')
|
.replace(/[\\\/]package\.json$/, '')
|
||||||
|
|
|
@ -4,8 +4,9 @@ import webpack from './build/webpack'
|
||||||
import read from './read'
|
import read from './read'
|
||||||
|
|
||||||
export default class HotReloader {
|
export default class HotReloader {
|
||||||
constructor (dir) {
|
constructor (dir, dev = false) {
|
||||||
this.dir = dir
|
this.dir = dir
|
||||||
|
this.dev = dev
|
||||||
this.server = null
|
this.server = null
|
||||||
this.initialized = false
|
this.initialized = false
|
||||||
this.stats = null
|
this.stats = null
|
||||||
|
@ -22,7 +23,7 @@ export default class HotReloader {
|
||||||
}
|
}
|
||||||
|
|
||||||
async prepareServer () {
|
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) => {
|
compiler.plugin('after-emit', (compilation, callback) => {
|
||||||
const { assets } = compilation
|
const { assets } = compilation
|
||||||
|
|
|
@ -11,7 +11,7 @@ export default class Server {
|
||||||
constructor ({ dir = '.', dev = false, hotReload = false }) {
|
constructor ({ dir = '.', dev = false, hotReload = false }) {
|
||||||
this.dir = resolve(dir)
|
this.dir = resolve(dir)
|
||||||
this.dev = dev
|
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.router = new Router()
|
||||||
|
|
||||||
this.http = http.createServer((req, res) => {
|
this.http = http.createServer((req, res) => {
|
||||||
|
|
Loading…
Reference in a new issue