@@ -34,6 +34,10 @@ interface GlobalCLIOptions {
34
34
w ?: boolean
35
35
}
36
36
37
+ interface ExperimentalDevOptions {
38
+ fullBundleMode ?: boolean
39
+ }
40
+
37
41
interface BuilderCLIOptions {
38
42
app ?: boolean
39
43
}
@@ -176,93 +180,105 @@ cli
176
180
'--force' ,
177
181
`[boolean] force the optimizer to ignore the cache and re-bundle` ,
178
182
)
179
- . action ( async ( root : string , options : ServerOptions & GlobalCLIOptions ) => {
180
- filterDuplicateOptions ( options )
181
- // output structure is preserved even after bundling so require()
182
- // is ok here
183
- const { createServer } = await import ( './server' )
184
- try {
185
- const server = await createServer ( {
186
- root,
187
- base : options . base ,
188
- mode : options . mode ,
189
- configFile : options . config ,
190
- configLoader : options . configLoader ,
191
- logLevel : options . logLevel ,
192
- clearScreen : options . clearScreen ,
193
- server : cleanGlobalCLIOptions ( options ) ,
194
- forceOptimizeDeps : options . force ,
195
- } )
183
+ . option ( '--fullBundleMode' , `[boolean] use experimental full bundle mode` )
184
+ . action (
185
+ async (
186
+ root : string ,
187
+ options : ServerOptions & ExperimentalDevOptions & GlobalCLIOptions ,
188
+ ) => {
189
+ filterDuplicateOptions ( options )
190
+ // output structure is preserved even after bundling so require()
191
+ // is ok here
192
+ const { createServer } = await import ( './server' )
193
+ try {
194
+ const server = await createServer ( {
195
+ root,
196
+ base : options . base ,
197
+ mode : options . mode ,
198
+ configFile : options . config ,
199
+ configLoader : options . configLoader ,
200
+ logLevel : options . logLevel ,
201
+ clearScreen : options . clearScreen ,
202
+ server : cleanGlobalCLIOptions ( options ) ,
203
+ forceOptimizeDeps : options . force ,
204
+ experimental : {
205
+ fullBundleMode : options . fullBundleMode ,
206
+ } ,
207
+ } )
196
208
197
- if ( ! server . httpServer ) {
198
- throw new Error ( 'HTTP server not available' )
199
- }
209
+ if ( ! server . httpServer ) {
210
+ throw new Error ( 'HTTP server not available' )
211
+ }
200
212
201
- await server . listen ( )
213
+ await server . listen ( )
202
214
203
- const info = server . config . logger . info
215
+ const info = server . config . logger . info
204
216
205
- const modeString =
206
- options . mode && options . mode !== 'development'
207
- ? ` ${ colors . bgGreen ( ` ${ colors . bold ( options . mode ) } ` ) } `
217
+ const modeString =
218
+ options . mode && options . mode !== 'development'
219
+ ? ` ${ colors . bgGreen ( ` ${ colors . bold ( options . mode ) } ` ) } `
220
+ : ''
221
+ const viteStartTime = global . __vite_start_time ?? false
222
+ const startupDurationString = viteStartTime
223
+ ? colors . dim (
224
+ `ready in ${ colors . reset (
225
+ colors . bold ( Math . ceil ( performance . now ( ) - viteStartTime ) ) ,
226
+ ) } ms`,
227
+ )
208
228
: ''
209
- const viteStartTime = global . __vite_start_time ?? false
210
- const startupDurationString = viteStartTime
211
- ? colors . dim (
212
- `ready in ${ colors . reset (
213
- colors . bold ( Math . ceil ( performance . now ( ) - viteStartTime ) ) ,
214
- ) } ms`,
215
- )
216
- : ''
217
- const hasExistingLogs =
218
- process . stdout . bytesWritten > 0 || process . stderr . bytesWritten > 0
229
+ const hasExistingLogs =
230
+ process . stdout . bytesWritten > 0 || process . stderr . bytesWritten > 0
219
231
220
- info (
221
- `\n ${ colors . green (
222
- `${ colors . bold ( 'ROLLDOWN-VITE' ) } v${ VERSION } ` ,
223
- ) } ${ modeString } ${ startupDurationString } \n`,
224
- {
225
- clear : ! hasExistingLogs ,
226
- } ,
227
- )
232
+ info (
233
+ `\n ${ colors . green (
234
+ `${ colors . bold ( 'ROLLDOWN-VITE' ) } v${ VERSION } ` ,
235
+ ) } ${ modeString } ${ startupDurationString } \n`,
236
+ {
237
+ clear : ! hasExistingLogs ,
238
+ } ,
239
+ )
228
240
229
- server . printUrls ( )
230
- const customShortcuts : CLIShortcut < typeof server > [ ] = [ ]
231
- if ( profileSession ) {
232
- customShortcuts . push ( {
233
- key : 'p' ,
234
- description : 'start/stop the profiler' ,
235
- async action ( server ) {
236
- if ( profileSession ) {
237
- await stopProfiler ( server . config . logger . info )
238
- } else {
239
- const inspector = await import ( 'node:inspector' ) . then (
240
- ( r ) => r . default ,
241
- )
242
- await new Promise < void > ( ( res ) => {
243
- profileSession = new inspector . Session ( )
244
- profileSession . connect ( )
245
- profileSession . post ( 'Profiler.enable' , ( ) => {
246
- profileSession ! . post ( 'Profiler.start' , ( ) => {
247
- server . config . logger . info ( 'Profiler started' )
248
- res ( )
241
+ server . printUrls ( )
242
+ const customShortcuts : CLIShortcut < typeof server > [ ] = [ ]
243
+ if ( profileSession ) {
244
+ customShortcuts . push ( {
245
+ key : 'p' ,
246
+ description : 'start/stop the profiler' ,
247
+ async action ( server ) {
248
+ if ( profileSession ) {
249
+ await stopProfiler ( server . config . logger . info )
250
+ } else {
251
+ const inspector = await import ( 'node:inspector' ) . then (
252
+ ( r ) => r . default ,
253
+ )
254
+ await new Promise < void > ( ( res ) => {
255
+ profileSession = new inspector . Session ( )
256
+ profileSession . connect ( )
257
+ profileSession . post ( 'Profiler.enable' , ( ) => {
258
+ profileSession ! . post ( 'Profiler.start' , ( ) => {
259
+ server . config . logger . info ( 'Profiler started' )
260
+ res ( )
261
+ } )
249
262
} )
250
263
} )
251
- } )
252
- }
264
+ }
265
+ } ,
266
+ } )
267
+ }
268
+ server . bindCLIShortcuts ( { print : true , customShortcuts } )
269
+ } catch ( e ) {
270
+ const logger = createLogger ( options . logLevel )
271
+ logger . error (
272
+ colors . red ( `error when starting dev server:\n${ e . stack } ` ) ,
273
+ {
274
+ error : e ,
253
275
} ,
254
- } )
276
+ )
277
+ stopProfiler ( logger . info )
278
+ process . exit ( 1 )
255
279
}
256
- server . bindCLIShortcuts ( { print : true , customShortcuts } )
257
- } catch ( e ) {
258
- const logger = createLogger ( options . logLevel )
259
- logger . error ( colors . red ( `error when starting dev server:\n${ e . stack } ` ) , {
260
- error : e ,
261
- } )
262
- stopProfiler ( logger . info )
263
- process . exit ( 1 )
264
- }
265
- } )
280
+ } ,
281
+ )
266
282
267
283
// build
268
284
cli
0 commit comments