3
3
import { Reporter } from '@parcel/plugin' ;
4
4
import HMRServer from './HMRServer' ;
5
5
import Server from './Server' ;
6
+ import { NodeRunner } from './NodeRunner' ;
6
7
7
8
let servers : Map < number , Server > = new Map ( ) ;
8
9
let hmrServers : Map < number , HMRServer > = new Map ( ) ;
10
+ let nodeRunners : Map < string , NodeRunner > = new Map ( ) ;
9
11
export default ( new Reporter ( {
10
12
async report ( { event, options, logger} ) {
11
13
let { serveOptions, hmrOptions} = options ;
12
14
let server = serveOptions ? servers . get ( serveOptions . port ) : undefined ;
13
15
let hmrPort =
14
16
( hmrOptions && hmrOptions . port ) || ( serveOptions && serveOptions . port ) ;
15
17
let hmrServer = hmrPort ? hmrServers . get ( hmrPort ) : undefined ;
18
+ let nodeRunner = nodeRunners . get ( options . instanceId ) ;
16
19
switch ( event . type ) {
17
20
case 'watchStart' : {
18
21
if ( serveOptions ) {
@@ -55,6 +58,7 @@ export default (new Reporter({
55
58
cacheDir : options . cacheDir ,
56
59
inputFS : options . inputFS ,
57
60
outputFS : options . outputFS ,
61
+ projectRoot : options . projectRoot ,
58
62
} ;
59
63
hmrServer = new HMRServer ( hmrServerOptions ) ;
60
64
hmrServers . set ( serveOptions . port , hmrServer ) ;
@@ -73,6 +77,7 @@ export default (new Reporter({
73
77
cacheDir : options . cacheDir ,
74
78
inputFS : options . inputFS ,
75
79
outputFS : options . outputFS ,
80
+ projectRoot : options . projectRoot ,
76
81
} ;
77
82
hmrServer = new HMRServer ( hmrServerOptions ) ;
78
83
hmrServers . set ( port , hmrServer ) ;
@@ -101,6 +106,7 @@ export default (new Reporter({
101
106
if ( server ) {
102
107
server . buildStart ( ) ;
103
108
}
109
+ nodeRunner ?. buildStart ( ) ;
104
110
break ;
105
111
case 'buildProgress' :
106
112
if (
@@ -113,7 +119,7 @@ export default (new Reporter({
113
119
await hmrServer . emitUpdate ( event ) ;
114
120
}
115
121
break ;
116
- case 'buildSuccess' :
122
+ case 'buildSuccess' : {
117
123
if ( serveOptions ) {
118
124
if ( ! server ) {
119
125
return logger . warn ( {
@@ -127,7 +133,14 @@ export default (new Reporter({
127
133
if ( hmrServer && options . serveOptions === false ) {
128
134
await hmrServer . emitUpdate ( event ) ;
129
135
}
136
+
137
+ if ( ! nodeRunner && options . serveOptions ) {
138
+ nodeRunner = new NodeRunner ( { logger, hmr : ! ! options . hmrOptions } ) ;
139
+ nodeRunners . set ( options . instanceId , nodeRunner ) ;
140
+ }
141
+ nodeRunner ?. buildSuccess ( event . bundleGraph ) ;
130
142
break ;
143
+ }
131
144
case 'buildFailure' :
132
145
// On buildFailure watchStart sometimes has not been called yet
133
146
// do not throw an additional warning here
0 commit comments