File tree Expand file tree Collapse file tree 3 files changed +26
-22
lines changed Expand file tree Collapse file tree 3 files changed +26
-22
lines changed Original file line number Diff line number Diff line change @@ -4,8 +4,6 @@ import { resolve, join } from 'path'
4
4
import parseArgs from 'minimist'
5
5
import { exists } from 'mz/fs'
6
6
import Server from '../server'
7
- import HotReloader from '../server/hot-reloader'
8
- import webpack from '../server/build/webpack'
9
7
import clean from '../server/build/clean'
10
8
11
9
const argv = parseArgs ( process . argv . slice ( 2 ) , {
@@ -27,13 +25,9 @@ const open = url => {
27
25
28
26
const dir = resolve ( argv . _ [ 0 ] || '.' )
29
27
30
- Promise . all ( [
31
- webpack ( dir , { hotReload : true } ) ,
32
- clean ( dir )
33
- ] )
34
- . then ( async ( [ compiler ] ) => {
35
- const hotReloader = new HotReloader ( compiler )
36
- const srv = new Server ( { dir, dev : true , hotReloader } )
28
+ clean ( dir )
29
+ . then ( async ( ) => {
30
+ const srv = new Server ( { dir, dev : true , hotReload : true } )
37
31
await srv . start ( argv . port )
38
32
console . log ( '> Ready on http://localhost:%d' , argv . port )
39
33
Original file line number Diff line number Diff line change 1
1
import WebpackDevServer from 'webpack-dev-server'
2
+ import webpack from './build/webpack'
2
3
import read from './read'
3
4
4
5
export default class HotReloader {
5
- constructor ( compiler ) {
6
- this . server = new WebpackDevServer ( compiler , {
7
- publicPath : '/' ,
8
- hot : true ,
9
- noInfo : true ,
10
- clientLogLevel : 'warning'
11
- } )
6
+ constructor ( dir ) {
7
+ this . dir = dir
8
+ this . server = null
9
+ }
10
+
11
+ async start ( ) {
12
+ await this . prepareServer ( )
13
+ await this . waitBuild ( )
14
+ await this . listen ( )
15
+ }
16
+
17
+ async prepareServer ( ) {
18
+ const compiler = await webpack ( this . dir , { hotReload : true } )
12
19
13
20
compiler . plugin ( 'after-emit' , ( compilation , callback ) => {
14
21
const { assets } = compilation
@@ -20,11 +27,13 @@ export default class HotReloader {
20
27
}
21
28
callback ( )
22
29
} )
23
- }
24
30
25
- async start ( ) {
26
- await this . waitBuild ( )
27
- await this . listen ( )
31
+ this . server = new WebpackDevServer ( compiler , {
32
+ publicPath : '/' ,
33
+ hot : true ,
34
+ noInfo : true ,
35
+ clientLogLevel : 'warning'
36
+ } )
28
37
}
29
38
30
39
async waitBuild ( ) {
Original file line number Diff line number Diff line change @@ -3,12 +3,13 @@ import { resolve } from 'path'
3
3
import send from 'send'
4
4
import Router from './router'
5
5
import { render , renderJSON } from './render'
6
+ import HotReloader from './hot-reloader'
6
7
7
8
export default class Server {
8
- constructor ( { dir = '.' , dev = false , hotReloader } ) {
9
+ constructor ( { dir = '.' , dev = false , hotReload = false } ) {
9
10
this . dir = resolve ( dir )
10
11
this . dev = dev
11
- this . hotReloader = hotReloader
12
+ this . hotReloader = hotReload ? new HotReloader ( this . dir ) : null
12
13
this . router = new Router ( )
13
14
14
15
this . http = http . createServer ( ( req , res ) => {
You can’t perform that action at this time.
0 commit comments