@@ -408,77 +408,109 @@ def _generate_code_split_entry(ctx, bundles_folder, output):
408
408
},
409
409
)
410
410
411
+ # Generate code split bundles if additional entry points have been specified.
412
+ # See doc for additional_entry_points for more information.
413
+ # Note: "_chunks" is needed on the output folders since ctx.label.name + ".es2015" is already
414
+ # a folder that contains the re-rooted es2015 sources
415
+ def _rollup_bundle_addition_entry_points (ctx ):
416
+ rollup_config = write_rollup_config (ctx , output_format = "es" , additional_entry_points = ctx .attr .additional_entry_points )
417
+ code_split_es2015_output_dir = ctx .actions .declare_directory (ctx .label .name + "_chunks_es2015" )
418
+ _run_rollup (ctx , _collect_es2015_sources (ctx ), rollup_config , code_split_es2015_output_dir )
419
+ code_split_es2015_min_output_dir = ctx .actions .declare_directory (ctx .label .name + "_chunks_min_es2015" )
420
+ _run_terser (ctx , code_split_es2015_output_dir , code_split_es2015_min_output_dir , None )
421
+ code_split_es2015_min_debug_output_dir = ctx .actions .declare_directory (ctx .label .name + "_chunks_min_debug_es2015" )
422
+ _run_terser (ctx , code_split_es2015_output_dir , code_split_es2015_min_debug_output_dir , None , debug = True )
423
+
424
+ code_split_es5_output_dir = ctx .actions .declare_directory (ctx .label .name + "_chunks" )
425
+ _run_tsc_on_directory (ctx , code_split_es2015_output_dir , code_split_es5_output_dir )
426
+ code_split_es5_min_output_dir = ctx .actions .declare_directory (ctx .label .name + "_chunks_min" )
427
+ _run_terser (ctx , code_split_es5_output_dir , code_split_es5_min_output_dir , None )
428
+ code_split_es5_min_debug_output_dir = ctx .actions .declare_directory (ctx .label .name + "_chunks_min_debug" )
429
+ _run_terser (ctx , code_split_es5_output_dir , code_split_es5_min_debug_output_dir , None , debug = True )
430
+
431
+ # Generate the SystemJS boilerplate/entry point files
432
+ _generate_toplevel_entry (ctx , ctx .label .name + "_chunks_es2015" , ctx .outputs .build_es2015 )
433
+ _generate_toplevel_entry (ctx , ctx .label .name + "_chunks_min_es2015" , ctx .outputs .build_es2015_min )
434
+ _generate_toplevel_entry (ctx , ctx .label .name + "_chunks_min_debug_es2015" , ctx .outputs .build_es2015_min_debug )
435
+ _generate_code_split_entry (ctx , ctx .label .name + "_chunks" , ctx .outputs .build_es5 )
436
+ _generate_code_split_entry (ctx , ctx .label .name + "_chunks_min" , ctx .outputs .build_es5_min )
437
+ _generate_code_split_entry (ctx , ctx .label .name + "_chunks_min_debug" , ctx .outputs .build_es5_min_debug )
438
+
439
+ # There is no UMD/CJS bundle when code-splitting but we still need to satisfy the output
440
+ _generate_code_split_entry (ctx , ctx .label .name + "_chunks" , ctx .outputs .build_umd )
441
+ _generate_code_split_entry (ctx , ctx .label .name + "_chunks" , ctx .outputs .build_cjs )
442
+
443
+ # There is no source map explorer output when code-splitting but we still need to satisfy the output
444
+ ctx .actions .expand_template (
445
+ output = ctx .outputs .explore_html ,
446
+ template = ctx .file ._no_explore_html ,
447
+ substitutions = {},
448
+ )
449
+ files = [
450
+ ctx .outputs .build_es2015 ,
451
+ ctx .outputs .build_es2015_min ,
452
+ ctx .outputs .build_es2015_min_debug ,
453
+ ctx .outputs .build_es5 ,
454
+ ctx .outputs .build_es5_min ,
455
+ ctx .outputs .build_es5_min_debug ,
456
+ code_split_es2015_output_dir ,
457
+ code_split_es2015_min_output_dir ,
458
+ code_split_es2015_min_debug_output_dir ,
459
+ code_split_es5_output_dir ,
460
+ code_split_es5_min_output_dir ,
461
+ code_split_es5_min_debug_output_dir ,
462
+ ]
463
+
464
+ return [
465
+ DefaultInfo (files = depset (files ), runfiles = ctx .runfiles (files )),
466
+ OutputGroupInfo (
467
+ es2015 = depset ([ctx .outputs .build_es2015 , code_split_es2015_output_dir ]),
468
+ es2015_min = depset ([ctx .outputs .build_es2015_min , code_split_es2015_min_output_dir ]),
469
+ es2015_min_debug = depset ([ctx .outputs .build_es2015_min_debug , code_split_es2015_min_debug_output_dir ]),
470
+ es5 = depset ([ctx .outputs .build_es5 , code_split_es5_output_dir ]),
471
+ es5_min = depset ([ctx .outputs .build_es5_min , code_split_es5_min_output_dir ]),
472
+ es5_min_debug = depset ([ctx .outputs .build_es5_min_debug , code_split_es5_min_debug_output_dir ]),
473
+ ),
474
+ ]
475
+
476
+ def _rollup_bundle_single_entry (ctx ):
477
+ # Generate the bundles
478
+ rollup_config = write_rollup_config (ctx )
479
+
480
+ es2015_map = run_rollup (ctx , _collect_es2015_sources (ctx ), rollup_config , ctx .outputs .build_es2015 )
481
+ es2015_min_map = run_terser (ctx , ctx .outputs .build_es2015 , ctx .outputs .build_es2015_min , config_name = ctx .label .name + "es2015_min" )
482
+ es2015_min_debug_map = run_terser (ctx , ctx .outputs .build_es2015 , ctx .outputs .build_es2015_min_debug , debug = True , config_name = ctx .label .name + "es2015_min_debug" )
483
+ _run_tsc (ctx , ctx .outputs .build_es2015 , ctx .outputs .build_es5 )
484
+ es5_min_map = run_terser (ctx , ctx .outputs .build_es5 , ctx .outputs .build_es5_min )
485
+ es5_min_debug_map = run_terser (ctx , ctx .outputs .build_es5 , ctx .outputs .build_es5_min_debug , debug = True )
486
+ cjs_rollup_config = write_rollup_config (ctx , filename = "_%s_cjs.rollup.conf.js" , output_format = "cjs" )
487
+ cjs_map = run_rollup (ctx , _collect_es2015_sources (ctx ), cjs_rollup_config , ctx .outputs .build_cjs )
488
+ umd_rollup_config = write_rollup_config (ctx , filename = "_%s_umd.rollup.conf.js" , output_format = "umd" )
489
+ umd_map = run_rollup (ctx , _collect_es2015_sources (ctx ), umd_rollup_config , ctx .outputs .build_umd )
490
+
491
+ run_sourcemapexplorer (ctx , ctx .outputs .build_es5_min , es5_min_map , ctx .outputs .explore_html )
492
+
493
+ files = [ctx .outputs .build_es5_min , es5_min_map ]
494
+
495
+ return [
496
+ DefaultInfo (files = depset (files ), runfiles = ctx .runfiles (files )),
497
+ OutputGroupInfo (
498
+ cjs = depset ([ctx .outputs .build_cjs , cjs_map ]),
499
+ es2015 = depset ([ctx .outputs .build_es2015 , es2015_map ]),
500
+ es2015_min = depset ([ctx .outputs .build_es2015_min , es2015_min_map ]),
501
+ es2015_min_debug = depset ([ctx .outputs .build_es2015_min_debug , es2015_min_debug_map ]),
502
+ es5 = depset ([ctx .outputs .build_es5 ]),
503
+ es5_min = depset ([ctx .outputs .build_es5_min , es5_min_map ]),
504
+ es5_min_debug = depset ([ctx .outputs .build_es5_min_debug , es5_min_debug_map ]),
505
+ umd = depset ([ctx .outputs .build_umd , umd_map ]),
506
+ ),
507
+ ]
508
+
411
509
def _rollup_bundle (ctx ):
412
510
if ctx .attr .additional_entry_points :
413
- # Generate code split bundles if additional entry points have been specified.
414
- # See doc for additional_entry_points for more information.
415
- # Note: "_chunks" is needed on the output folders since ctx.label.name + ".es2015" is already
416
- # a folder that contains the re-rooted es2015 sources
417
- rollup_config = write_rollup_config (ctx , output_format = "es" , additional_entry_points = ctx .attr .additional_entry_points )
418
- code_split_es2015_output_dir = ctx .actions .declare_directory (ctx .label .name + "_chunks_es2015" )
419
- _run_rollup (ctx , _collect_es2015_sources (ctx ), rollup_config , code_split_es2015_output_dir )
420
- code_split_es2015_min_output_dir = ctx .actions .declare_directory (ctx .label .name + "_chunks_min_es2015" )
421
- _run_terser (ctx , code_split_es2015_output_dir , code_split_es2015_min_output_dir , None )
422
- code_split_es2015_min_debug_output_dir = ctx .actions .declare_directory (ctx .label .name + "_chunks_min_debug_es2015" )
423
- _run_terser (ctx , code_split_es2015_output_dir , code_split_es2015_min_debug_output_dir , None , debug = True )
424
-
425
- code_split_es5_output_dir = ctx .actions .declare_directory (ctx .label .name + "_chunks" )
426
- _run_tsc_on_directory (ctx , code_split_es2015_output_dir , code_split_es5_output_dir )
427
- code_split_es5_min_output_dir = ctx .actions .declare_directory (ctx .label .name + "_chunks_min" )
428
- _run_terser (ctx , code_split_es5_output_dir , code_split_es5_min_output_dir , None )
429
- code_split_es5_min_debug_output_dir = ctx .actions .declare_directory (ctx .label .name + "_chunks_min_debug" )
430
- _run_terser (ctx , code_split_es5_output_dir , code_split_es5_min_debug_output_dir , None , debug = True )
431
-
432
- # Generate the SystemJS boilerplate/entry point files
433
- _generate_toplevel_entry (ctx , ctx .label .name + "_chunks_es2015" , ctx .outputs .build_es2015 )
434
- _generate_toplevel_entry (ctx , ctx .label .name + "_chunks_min_es2015" , ctx .outputs .build_es2015_min )
435
- _generate_toplevel_entry (ctx , ctx .label .name + "_chunks_min_debug_es2015" , ctx .outputs .build_es2015_min_debug )
436
- _generate_code_split_entry (ctx , ctx .label .name + "_chunks" , ctx .outputs .build_es5 )
437
- _generate_code_split_entry (ctx , ctx .label .name + "_chunks_min" , ctx .outputs .build_es5_min )
438
- _generate_code_split_entry (ctx , ctx .label .name + "_chunks_min_debug" , ctx .outputs .build_es5_min_debug )
439
-
440
- # There is no UMD/CJS bundle when code-splitting but we still need to satisfy the output
441
- _generate_code_split_entry (ctx , ctx .label .name + "_chunks" , ctx .outputs .build_umd )
442
- _generate_code_split_entry (ctx , ctx .label .name + "_chunks" , ctx .outputs .build_cjs )
443
-
444
- # There is no source map explorer output when code-splitting but we still need to satisfy the output
445
- ctx .actions .expand_template (
446
- output = ctx .outputs .explore_html ,
447
- template = ctx .file ._no_explore_html ,
448
- substitutions = {},
449
- )
450
- files = [
451
- ctx .outputs .build_es2015 ,
452
- ctx .outputs .build_es2015_min ,
453
- ctx .outputs .build_es2015_min_debug ,
454
- ctx .outputs .build_es5 ,
455
- ctx .outputs .build_es5_min ,
456
- ctx .outputs .build_es5_min_debug ,
457
- code_split_es2015_output_dir ,
458
- code_split_es2015_min_output_dir ,
459
- code_split_es2015_min_debug_output_dir ,
460
- code_split_es5_output_dir ,
461
- code_split_es5_min_output_dir ,
462
- code_split_es5_min_debug_output_dir ,
463
- ]
464
-
511
+ return _rollup_bundle_addition_entry_points (ctx )
465
512
else :
466
- # Generate the bundles
467
- rollup_config = write_rollup_config (ctx )
468
- run_rollup (ctx , _collect_es2015_sources (ctx ), rollup_config , ctx .outputs .build_es2015 )
469
- run_terser (ctx , ctx .outputs .build_es2015 , ctx .outputs .build_es2015_min , config_name = ctx .label .name + "es2015_min" )
470
- run_terser (ctx , ctx .outputs .build_es2015 , ctx .outputs .build_es2015_min_debug , debug = True , config_name = ctx .label .name + "es2015_min_debug" )
471
- _run_tsc (ctx , ctx .outputs .build_es2015 , ctx .outputs .build_es5 )
472
- source_map = run_terser (ctx , ctx .outputs .build_es5 , ctx .outputs .build_es5_min )
473
- run_terser (ctx , ctx .outputs .build_es5 , ctx .outputs .build_es5_min_debug , debug = True )
474
- cjs_rollup_config = write_rollup_config (ctx , filename = "_%s_cjs.rollup.conf.js" , output_format = "cjs" )
475
- run_rollup (ctx , _collect_es2015_sources (ctx ), cjs_rollup_config , ctx .outputs .build_cjs )
476
- umd_rollup_config = write_rollup_config (ctx , filename = "_%s_umd.rollup.conf.js" , output_format = "umd" )
477
- run_rollup (ctx , _collect_es2015_sources (ctx ), umd_rollup_config , ctx .outputs .build_umd )
478
- run_sourcemapexplorer (ctx , ctx .outputs .build_es5_min , source_map , ctx .outputs .explore_html )
479
- files = [ctx .outputs .build_es5_min , source_map ]
480
-
481
- return DefaultInfo (files = depset (files ), runfiles = ctx .runfiles (files ))
513
+ return _rollup_bundle_single_entry (ctx )
482
514
483
515
# Expose our list of aspects so derivative rules can override the deps attribute and
484
516
# add their own additional aspects.
0 commit comments