Skip to content

Commit

Permalink
build: [WIP] update zone.js to use the new rollup_bundle
Browse files Browse the repository at this point in the history
  • Loading branch information
gregmagolan committed Oct 27, 2019
1 parent 1fb3a58 commit d49bbd6
Show file tree
Hide file tree
Showing 8 changed files with 1,064 additions and 257 deletions.
12 changes: 8 additions & 4 deletions package.json
Expand Up @@ -40,10 +40,14 @@
"@angular-devkit/core": "^9.0.0-next.15",
"@angular-devkit/schematics": "^9.0.0-next.15",
"@angular/bazel": "file:./tools/npm/@angular_bazel",
"@babel/cli": "^7.6.4",
"@babel/core": "^7.6.4",
"@babel/preset-env": "^7.6.3",
"@bazel/jasmine": "0.39.0",
"@bazel/karma": "0.39.0",
"@bazel/protractor": "0.39.0",
"@bazel/rollup": "0.39.0",
"@bazel/terser": "0.39.0",
"@bazel/typescript": "0.39.0",
"@microsoft/api-extractor": "^7.3.9",
"@schematics/angular": "^8.0.0-beta.15",
Expand Down Expand Up @@ -102,11 +106,11 @@
"nodejs-websocket": "^1.7.2",
"protractor": "^5.4.2",
"reflect-metadata": "^0.1.3",
"rollup": "^1.1.0",
"rollup-plugin-amd": "^3.0.0",
"rollup-plugin-commonjs": "^9.2.1",
"rollup": "1.21.4",
"rollup-plugin-amd": "^4.0.0",
"rollup-plugin-commonjs": "^10.1.0",
"rollup-plugin-json": "^4.0.0",
"rollup-plugin-node-resolve": "^4.0.0",
"rollup-plugin-node-resolve": "^5.2.0",
"rollup-plugin-sourcemaps": "^0.4.2",
"rxjs": "^6.5.3",
"selenium-webdriver": "3.5.0",
Expand Down
2 changes: 2 additions & 0 deletions packages/zone.js/BUILD.bazel
Expand Up @@ -3,6 +3,8 @@ load("//packages/zone.js:bundles.bzl", "ES2015_BUNDLES", "ES5_BUNDLES", "ES5_GLO

exports_files([
"tsconfig.json",
"rollup-es5.config.js",
"rollup-es5_global-es2015.config.js",
])

genrule(
Expand Down
64 changes: 10 additions & 54 deletions packages/zone.js/dist/BUILD.bazel
Expand Up @@ -21,11 +21,8 @@ genrule(
[
rollup_bundle(
name = b[0].replace("-", "_") + "_rollup",
config_file = "//packages/zone.js:rollup-es5.config.js",
entry_point = b[1] + ".ts",
globals = {
"electron": "electron",
},
license_banner = "//packages:license-banner.txt",
deps = [
"//packages/zone.js/lib",
],
Expand All @@ -36,63 +33,22 @@ genrule(
[
rollup_bundle(
name = b[0].replace("-", "_") + "_rollup",
config_file = "//packages/zone.js:rollup-es5_global-es2015.config.js",
entry_point = b[1] + ".ts",
global_name = "Zone",
license_banner = "//packages:license-banner.txt",
deps = [
"//packages/zone.js/lib",
],
)
for b in ES5_GLOBAL_BUNDLES.items() + ES2015_BUNDLES.items()
]

# the es5 filegroups
[
filegroup(
name = b[0] + ".es5",
srcs = [":" + b[0].replace("-", "_") + "_rollup"],
output_group = "es5_umd",
)
for b in ES5_BUNDLES.items() + ES5_GLOBAL_BUNDLES.items()
]

# the es5.min filegroups
[
filegroup(
name = b[0] + ".es5.min",
srcs = [":" + b[0].replace("-", "_") + "_rollup"],
output_group = "es5_umd_min",
)
for b in ES5_BUNDLES.items() + ES5_GLOBAL_BUNDLES.items()
]

# the es2015 filegroups
[
filegroup(
name = b[0] + ".umd",
srcs = [":" + b[0].replace("-", "_") + "_rollup"],
output_group = "umd",
)
for b in ES2015_BUNDLES.items()
]

# the es2015.min filegroups
[
filegroup(
name = b[0] + ".umd.min",
srcs = [":" + b[0].replace("-", "_") + "_rollup"],
output_group = "umd_min",
)
for b in ES2015_BUNDLES.items()
]

# Extract and rename each es5 bundle to a .js and .min.js in the dist/ dir
[
genrule(
name = b[0] + "-dist",
srcs = [
b[0] + ".es5",
b[0] + ".es5.min",
b[0].replace("-", "_") + "_rollup.es5umd.js",
b[0].replace("-", "_") + "_rollup.min.es5umd.js",
],
outs = [
b[0] + ".js",
Expand All @@ -114,7 +70,7 @@ genrule(
genrule(
name = b[0] + "-dist-dev-test",
srcs = [
b[0] + ".es5",
b[0].replace("-", "_") + "_rollup.es5umd.js",
],
outs = [
b[0] + ".dev.test.js",
Expand All @@ -131,7 +87,7 @@ genrule(
genrule(
name = b + "-dist-dev-test",
srcs = [
b + ".umd",
b.replace("-", "_") + "_rollup.umd.js",
],
outs = [
b + ".dev.test.js",
Expand All @@ -149,7 +105,7 @@ genrule(
genrule(
name = b[0] + "-dist-test",
srcs = [
b[0] + ".es5.min",
b[0].replace("-", "_") + "_rollup.min.es5umd.js",
],
outs = [
b[0] + ".test.min.js",
Expand All @@ -167,8 +123,8 @@ genrule(
genrule(
name = b + "-dist",
srcs = [
b + ".umd",
b + ".umd.min",
b.replace("-", "_") + "_rollup.umd.js",
b.replace("-", "_") + "_rollup.min.umd.js",
],
outs = [
b + ".js",
Expand All @@ -190,7 +146,7 @@ genrule(
genrule(
name = b + "-dist-test",
srcs = [
b + ".umd.min",
b.replace("-", "_") + "_rollup.min.umd.js",
],
outs = [
b + ".test.min.js",
Expand Down
10 changes: 10 additions & 0 deletions packages/zone.js/rollup-es5.config.js
@@ -0,0 +1,10 @@
const banner = `/**
* @license Angular v0.0.0-PLACEHOLDER
* (c) 2010-2019 Google LLC. https://angular.io/
* License: MIT
*/`;

module.exports = {
external: ['electron'],
output: {globals: {electron: 'electron'}, banner},
}
10 changes: 10 additions & 0 deletions packages/zone.js/rollup-es5_global-es2015.config.js
@@ -0,0 +1,10 @@
const banner = `/**
* @license Angular v0.0.0-PLACEHOLDER
* (c) 2010-2019 Google LLC. https://angular.io/
* License: MIT
*/`;

module.exports = {
external: ['rxjs'],
output: {globals: {rxjs: 'rxjs'}, name: 'Zone', banner},
}
20 changes: 3 additions & 17 deletions packages/zone.js/test/karma_test.bzl
Expand Up @@ -16,17 +16,11 @@ def karma_test_prepare(name, env_srcs, env_deps, env_entry_point, test_srcs, tes
":" + name + "_env",
],
)
native.filegroup(
name = name + "_env_rollup.es5",
testonly = True,
srcs = [":" + name + "_env_rollup"],
output_group = "umd",
)
native.genrule(
name = name + "_env_trim_map",
testonly = True,
srcs = [
":" + name + "_env_rollup.es5",
":" + name + "_env_rollup.umd",
],
outs = [
name + "_env_rollup_trim_map.js",
Expand All @@ -45,24 +39,16 @@ def karma_test_prepare(name, env_srcs, env_deps, env_entry_point, test_srcs, tes
name = name + "_rollup",
testonly = True,
entry_point = test_entry_point,
globals = {
"electron": "electron",
},
config_file = "//packages/zone.js:rollup-es5.config.js",
deps = [
":" + name + "_test",
],
)
native.filegroup(
name = name + "_rollup.es5",
testonly = True,
srcs = [":" + name + "_rollup"],
output_group = "umd",
)
native.genrule(
name = name + "_trim_map",
testonly = True,
srcs = [
":" + name + "_rollup.es5",
":" + name + "_rollup.umd",
],
outs = [
name + "_rollup_trim_map.js",
Expand Down
95 changes: 87 additions & 8 deletions tools/defaults.bzl
@@ -1,12 +1,15 @@
"""Re-export of some bazel rules with repository-wide defaults."""

load("@build_bazel_rules_nodejs//:defs.bzl", _nodejs_binary = "nodejs_binary", _npm_package = "npm_package", _rollup_bundle = "rollup_bundle")
load("@build_bazel_rules_nodejs//:defs.bzl", _nodejs_binary = "nodejs_binary", _npm_package = "npm_package")
load("@npm_bazel_jasmine//:index.bzl", _jasmine_node_test = "jasmine_node_test")
load("@npm_bazel_karma//:index.bzl", _karma_web_test = "karma_web_test", _karma_web_test_suite = "karma_web_test_suite", _ts_web_test = "ts_web_test", _ts_web_test_suite = "ts_web_test_suite")
load("@npm_bazel_typescript//:index.bzl", _ts_library = "ts_library")
load("//packages/bazel:index.bzl", _ng_module = "ng_module", _ng_package = "ng_package")
load("//packages/bazel/src:ng_rollup_bundle.bzl", _ng_rollup_bundle = "ng_rollup_bundle")
load("//tools:ng_benchmark.bzl", _ng_benchmark = "ng_benchmark")
load("@npm_bazel_rollup//:index.bzl", _rollup_bundle = "rollup_bundle")
load("@npm_bazel_terser//:index.bzl", "terser_minified")
load("@npm//@babel/cli:index.bzl", "babel")

_DEFAULT_TSCONFIG_TEST = "//packages:tsconfig-test"
_INTERNAL_NG_MODULE_API_EXTRACTOR = "//packages/bazel/src/api-extractor:api_extractor"
Expand Down Expand Up @@ -315,11 +318,87 @@ def ng_rollup_bundle(deps = [], **kwargs):
**kwargs
)

def rollup_bundle(**kwargs):
"""Default values for rollup_bundle"""
_rollup_bundle(
# code-splitting is turned on by default in nodejs rules 0.35.0
# we want to default to remain off
enable_code_splitting = False,
**kwargs
def rollup_bundle(name, testonly = False, **kwargs):
"""A drop in replacement for the rules nodejs [legacy rollup_bundle].
Runs [rollup_bundle], [terser_minified] and [babel] for downleveling to es5
to produce a number of output bundles.
es2015 esm : "%{name}.es2015.js"
es2015 esm minified : "%{name}.min.es2015.js"
es2015 esm minified (debug) : "%{name}.min_debug.es2015.js"
es5 esm : "%{name}.js"
es5 esm minified : "%{name}.min.js"
es5 esm minified (debug) : "%{name}.min_debug.js"
es5 umd : "%{name}.es5umd.js"
es5 umd minified : "%{name}.min.es5umd.js"
es2015 umd : "%{name}.umd.js"
es2015 umd minified : "%{name}.min.umd.js"
[legacy rollup_bundle]: https://github.com/bazelbuild/rules_nodejs/blob/0.38.3/internal/rollup/rollup_bundle.bzl
[rollup_bundle]: https://bazelbuild.github.io/rules_nodejs/Rollup.html
[terser_minified]: https://bazelbuild.github.io/rules_nodejs/Terser.html
[babel]: https://babeljs.io/
"""

# esm
_rollup_bundle(name = name + ".es2015", testonly = testonly, **kwargs)
terser_minified(name = name + ".min.es2015", testonly = testonly, src = name + ".es2015", sourcemap = False)
native.filegroup(name = name + ".min.es2015.js", testonly = testonly, srcs = [name + ".min.es2015"])
terser_minified(name = name + ".min_debug.es2015", testonly = testonly, src = name + ".es2015", sourcemap = False, debug = True)
native.filegroup(name = name + ".min_debug.es2015.js", testonly = testonly, srcs = [name + ".min_debug.es2015"])
babel(
name = name + "",
testonly = testonly,
outs = [
name + ".js",
],
args = [
"$(location :%s.es2015.js)" % name,
"--no-babelrc",
"--compact",
"false",
"--source-maps",
"inline",
"--presets=@babel/preset-env",
"--out-file",
"$(location :%s.js)" % name,
],
data = [
name + ".es2015.js",
"@npm//@babel/preset-env",
],
)
terser_minified(name = name + ".min", testonly = testonly, src = name + "", sourcemap = False)
native.filegroup(name = name + ".min.js", testonly = testonly, srcs = [name + ".min"])
terser_minified(name = name + ".min_debug", testonly = testonly, src = name + "", sourcemap = False, debug = True)
native.filegroup(name = name + ".min_debug.js", testonly = testonly, srcs = [name + ".min_debug"])

# umd
_rollup_bundle(name = name + ".umd", testonly = testonly, format = "umd", **kwargs)
terser_minified(name = name + ".min.umd", testonly = testonly, src = name + ".umd", sourcemap = False)
native.filegroup(name = name + ".min.umd.js", testonly = testonly, srcs = [name + ".min.umd"])
babel(
name = name + ".es5umd",
testonly = testonly,
outs = [
name + ".es5umd.js",
],
args = [
"$(location :%s.umd.js)" % name,
"--no-babelrc",
"--compact",
"false",
"--source-maps",
"inline",
"--presets=@babel/preset-env",
"--out-file",
"$(location :%s.es5umd.js)" % name,
],
data = [
name + ".umd.js",
"@npm//@babel/preset-env",
],
)
terser_minified(name = name + ".min.es5umd", testonly = testonly, src = name + ".es5umd", sourcemap = False)
native.filegroup(name = name + ".min.es5umd.js", testonly = testonly, srcs = [name + ".min.es5umd"])

0 comments on commit d49bbd6

Please sign in to comment.