Skip to content

Commit 354c25a

Browse files
Jason BedardKeen Yee Liau
Jason Bedard
authored and
Keen Yee Liau
committed
feat(rollup): provide output groupings of js+map for each bundle type
1 parent d5a679d commit 354c25a

File tree

5 files changed

+182
-12
lines changed

5 files changed

+182
-12
lines changed

internal/e2e/rollup/BUILD.bazel

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ rollup_bundle(
1818

1919
jasmine_node_test(
2020
name = "test",
21-
srcs = glob(["*.spec.js"]),
21+
srcs = ["rollup.spec.js"],
2222
configuration_env_vars = ["UPDATE_GOLDEN"],
2323
data = glob([
2424
"*_golden.js_",
@@ -35,3 +35,48 @@ jasmine_node_test(
3535
"@npm//unidiff",
3636
],
3737
)
38+
39+
filegroup(
40+
name = "bundle-outputgroups-cjs",
41+
srcs = [":bundle"],
42+
output_group = "cjs",
43+
)
44+
45+
filegroup(
46+
name = "bundle-outputgroups-umd",
47+
srcs = [":bundle"],
48+
output_group = "umd",
49+
)
50+
51+
filegroup(
52+
name = "bundle-outputgroups-es2015",
53+
srcs = [":bundle"],
54+
output_group = "es2015",
55+
)
56+
57+
filegroup(
58+
name = "bundle-outputgroups-es5_min",
59+
srcs = [":bundle"],
60+
output_group = "es5_min",
61+
)
62+
63+
filegroup(
64+
name = "bundle-outputgroups-es5_min_debug",
65+
srcs = [":bundle"],
66+
output_group = "es5_min_debug",
67+
)
68+
69+
jasmine_node_test(
70+
name = "test-outputgroups",
71+
srcs = ["outputgroups.spec.js"],
72+
data = [
73+
":bundle-outputgroups-cjs",
74+
":bundle-outputgroups-es2015",
75+
":bundle-outputgroups-es5_min",
76+
":bundle-outputgroups-es5_min_debug",
77+
":bundle-outputgroups-umd",
78+
],
79+
deps = [
80+
"@npm//jasmine",
81+
],
82+
)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
const fs = require('fs');
2+
const path = require('path');
3+
4+
function checkExists(name) {
5+
if (!fs.existsSync(require.resolve(path.join(__dirname, name)))) {
6+
fail(`Output ${name} does not exist.`);
7+
}
8+
}
9+
10+
// TODO: the right assertions are to load up the source-map library
11+
// and assert that the sourcemap actually maps back to the sources
12+
13+
describe('outputgroups', () => {
14+
it('should produce a es2015 sourcemap', () => {
15+
checkExists('bundle.es2015.js');
16+
checkExists('bundle.es2015.js.map');
17+
});
18+
it('should produce a es5_min sourcemap', () => {
19+
checkExists('bundle.min.js');
20+
checkExists('bundle.min.js.map');
21+
});
22+
it('should produce a es5_min_debug sourcemap', () => {
23+
checkExists('bundle.min_debug.js');
24+
checkExists('bundle.min_debug.js.map');
25+
});
26+
it('should produce a cjs sourcemap', () => {
27+
checkExists('bundle.cjs.js');
28+
checkExists('bundle.cjs.js.map');
29+
});
30+
it('should produce a umd sourcemap', () => {
31+
checkExists('bundle.umd.js');
32+
checkExists('bundle.umd.js.map');
33+
});
34+
});

internal/e2e/rollup_code_splitting/BUILD.bazel

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ rollup_bundle(
1313

1414
jasmine_node_test(
1515
name = "test",
16-
srcs = glob(["*.spec.js"]),
16+
srcs = [
17+
"additional_entry.spec.js",
18+
"main1.spec.js",
19+
],
1720
data = glob([
1821
"*_golden.js_",
1922
]) + [
@@ -26,3 +29,34 @@ jasmine_node_test(
2629
"@npm//unidiff",
2730
],
2831
)
32+
33+
filegroup(
34+
name = "bundle-outputgroups-es2015",
35+
srcs = [":bundle"],
36+
output_group = "es2015",
37+
)
38+
39+
filegroup(
40+
name = "bundle-outputgroups-es5_min",
41+
srcs = [":bundle"],
42+
output_group = "es5_min",
43+
)
44+
45+
filegroup(
46+
name = "bundle-outputgroups-es5_min_debug",
47+
srcs = [":bundle"],
48+
output_group = "es5_min_debug",
49+
)
50+
51+
jasmine_node_test(
52+
name = "test-outputgroups",
53+
srcs = ["outputgroups.spec.js"],
54+
data = [
55+
":bundle-outputgroups-es2015",
56+
":bundle-outputgroups-es5_min",
57+
":bundle-outputgroups-es5_min_debug",
58+
],
59+
deps = [
60+
"@npm//jasmine",
61+
],
62+
)
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
const fs = require('fs');
2+
const path = require('path');
3+
4+
function checkExists(name) {
5+
if (!fs.existsSync(require.resolve(path.join(__dirname, name)))) {
6+
fail(`Output ${name} does not exist.`);
7+
}
8+
}
9+
10+
// TODO: the right assertions are to load up the source-map library
11+
// and assert that the sourcemap actually maps back to the sources
12+
13+
describe('outputgroups', () => {
14+
it('should produce a es2015 sourcemap', () => {
15+
checkExists('bundle.es2015.js');
16+
checkExists('bundle_chunks_es2015/additional_entry.js');
17+
checkExists('bundle_chunks_es2015/additional_entry.js.map');
18+
checkExists('bundle_chunks_es2015/main1.js');
19+
checkExists('bundle_chunks_es2015/main1.js.map');
20+
});
21+
it('should produce a es5_min sourcemap', () => {
22+
checkExists('bundle.min.js');
23+
checkExists('bundle_chunks_min/additional_entry.js');
24+
checkExists('bundle_chunks_min/additional_entry.js.map');
25+
checkExists('bundle_chunks_min/main1.js');
26+
checkExists('bundle_chunks_min/main1.js.map');
27+
});
28+
it('should produce a es5_min_debug sourcemap', () => {
29+
checkExists('bundle.min_debug.js');
30+
checkExists('bundle_chunks_min_debug/additional_entry.js');
31+
checkExists('bundle_chunks_min_debug/additional_entry.js.map');
32+
checkExists('bundle_chunks_min_debug/main1.js');
33+
checkExists('bundle_chunks_min_debug/main1.js.map');
34+
});
35+
});

internal/rollup/rollup_bundle.bzl

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -474,24 +474,46 @@ def _rollup_bundle(ctx):
474474
code_split_es5_min_output_dir,
475475
code_split_es5_min_debug_output_dir,
476476
]
477+
output_group = OutputGroupInfo(
478+
es2015 = depset([ctx.outputs.build_es2015, code_split_es2015_output_dir]),
479+
es2015_min = depset([ctx.outputs.build_es2015_min, code_split_es2015_min_output_dir]),
480+
es2015_min_debug = depset([ctx.outputs.build_es2015_min_debug, code_split_es2015_min_debug_output_dir]),
481+
es5 = depset([ctx.outputs.build_es5, code_split_es5_output_dir]),
482+
es5_min = depset([ctx.outputs.build_es5_min, code_split_es5_min_output_dir]),
483+
es5_min_debug = depset([ctx.outputs.build_es5_min_debug, code_split_es5_min_debug_output_dir]),
484+
)
477485

478486
else:
479487
# Generate the bundles
480488
rollup_config = write_rollup_config(ctx)
481-
run_rollup(ctx, _collect_es2015_sources(ctx), rollup_config, ctx.outputs.build_es2015)
482-
run_terser(ctx, ctx.outputs.build_es2015, ctx.outputs.build_es2015_min, config_name = ctx.label.name + "es2015_min")
483-
run_terser(ctx, ctx.outputs.build_es2015, ctx.outputs.build_es2015_min_debug, debug = True, config_name = ctx.label.name + "es2015_min_debug")
489+
es2015_map = run_rollup(ctx, _collect_es2015_sources(ctx), rollup_config, ctx.outputs.build_es2015)
490+
es2015_min_map = run_terser(ctx, ctx.outputs.build_es2015, ctx.outputs.build_es2015_min, config_name = ctx.label.name + "es2015_min", in_source_map = es2015_map)
491+
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", in_source_map = es2015_map)
484492
_run_tsc(ctx, ctx.outputs.build_es2015, ctx.outputs.build_es5)
485-
source_map = run_terser(ctx, ctx.outputs.build_es5, ctx.outputs.build_es5_min)
486-
run_terser(ctx, ctx.outputs.build_es5, ctx.outputs.build_es5_min_debug, debug = True)
493+
es5_min_map = run_terser(ctx, ctx.outputs.build_es5, ctx.outputs.build_es5_min)
494+
es5_min_debug_map = run_terser(ctx, ctx.outputs.build_es5, ctx.outputs.build_es5_min_debug, debug = True)
487495
cjs_rollup_config = write_rollup_config(ctx, filename = "_%s_cjs.rollup.conf.js", output_format = "cjs")
488-
run_rollup(ctx, _collect_es2015_sources(ctx), cjs_rollup_config, ctx.outputs.build_cjs)
496+
cjs_map = run_rollup(ctx, _collect_es2015_sources(ctx), cjs_rollup_config, ctx.outputs.build_cjs)
489497
umd_rollup_config = write_rollup_config(ctx, filename = "_%s_umd.rollup.conf.js", output_format = "umd")
490-
run_rollup(ctx, _collect_es2015_sources(ctx), umd_rollup_config, ctx.outputs.build_umd)
491-
run_sourcemapexplorer(ctx, ctx.outputs.build_es5_min, source_map, ctx.outputs.explore_html)
492-
files = [ctx.outputs.build_es5_min, source_map]
498+
umd_map = run_rollup(ctx, _collect_es2015_sources(ctx), umd_rollup_config, ctx.outputs.build_umd)
499+
run_sourcemapexplorer(ctx, ctx.outputs.build_es5_min, es5_min_map, ctx.outputs.explore_html)
500+
501+
files = [ctx.outputs.build_es5_min, es5_min_map]
502+
output_group = OutputGroupInfo(
503+
cjs = depset([ctx.outputs.build_cjs, cjs_map]),
504+
es2015 = depset([ctx.outputs.build_es2015, es2015_map]),
505+
es2015_min = depset([ctx.outputs.build_es2015_min, es2015_min_map]),
506+
es2015_min_debug = depset([ctx.outputs.build_es2015_min_debug, es2015_min_debug_map]),
507+
es5 = depset([ctx.outputs.build_es5]),
508+
es5_min = depset([ctx.outputs.build_es5_min, es5_min_map]),
509+
es5_min_debug = depset([ctx.outputs.build_es5_min_debug, es5_min_debug_map]),
510+
umd = depset([ctx.outputs.build_umd, umd_map]),
511+
)
493512

494-
return DefaultInfo(files = depset(files), runfiles = ctx.runfiles(files))
513+
return [
514+
DefaultInfo(files = depset(files), runfiles = ctx.runfiles(files)),
515+
output_group,
516+
]
495517

496518
# Expose our list of aspects so derivative rules can override the deps attribute and
497519
# add their own additional aspects.

0 commit comments

Comments
 (0)