Skip to content
This repository was archived by the owner on Feb 26, 2024. It is now read-only.

Commit 71b9371

Browse files
JiaLiPassionalexeagle
authored andcommitted
Build: Use bazel to build and package zone.js (#1232)
1 parent 22b9937 commit 71b9371

File tree

103 files changed

+34512
-30040
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

103 files changed

+34512
-30040
lines changed

.bazelignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules

.bazelrc

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
build --symlink_prefix=build/
2+
3+
# Turn on --incompatible_strict_action_env which was on by default
4+
# in Bazel 0.21.0 but turned off again in 0.22.0. Follow
5+
# https://github.com/bazelbuild/bazel/issues/7026 for more details.
6+
# This flag is needed to so that the bazel cache is not invalidated
7+
# when running bazel via `yarn bazel`.
8+
# See https://github.com/angular/angular/issues/27514.
9+
build --incompatible_strict_action_env
10+
run --incompatible_strict_action_env
11+
test --incompatible_strict_action_env

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
bazel-out
12
build/
23
build-esm/
4+
build-esm-2015/
35
blink-core/
46
blink-idl/
57
parsed-idl/
68
/node_modules
79
.idea
810
.vscode
911
npm-debug.log
10-
build-esm/

.travis.yml

+8-3
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,16 @@ script:
2929
- yarn tslint
3030
- node_modules/.bin/gulp lint
3131
- node_modules/.bin/gulp format:enforce
32-
- node_modules/.bin/gulp build
3332
- node_modules/.bin/gulp filesize
3433
- scripts/closure/closure_compiler.sh
3534
- node_modules/.bin/gulp promisetest
3635
- yarn promisefinallytest
37-
- yarn test:phantomjs-single
36+
- yarn build:bazel
37+
- yarn build:bazel:test
38+
- rm -rf dist/*.js
39+
- cp build/bin/npm_package/dist/* dist/
40+
- rm -rf build
41+
- yarn tsc
3842
- node_modules/.bin/karma start karma-dist-sauce-jasmine.conf.js --single-run
3943
- node_modules/.bin/karma start karma-build-sauce-mocha.conf.js --single-run
4044
- node_modules/.bin/karma start karma-dist-sauce-selenium3-jasmine.conf.js --single-run
@@ -49,10 +53,11 @@ script:
4953
- node simple-server.js 2>&1> server.log&
5054
- node ./test/webdriver/test.sauce.js
5155
52-
- yarn test:phantomjs-single
5356
- node_modules/.bin/karma start karma-dist-sauce-jasmine3.conf.js --single-run
5457
- node_modules/.bin/karma start karma-build-sauce-selenium3-mocha.conf.js --single-run
5558
- node_modules/.bin/gulp test/node
5659
- node_modules/.bin/gulp test/node -no-patch-clock
5760
- cp ./test/browser/custom-element.spec.js ./build/test/browser
61+
- git checkout .
62+
- ls build/test
5863
- node_modules/.bin/karma start karma-evergreen-dist-sauce-jasmine.conf.js --single-run

BUILD.bazel

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
load("@build_bazel_rules_nodejs//:defs.bzl", "npm_package", "rollup_bundle")
2+
load("@npm_bazel_jasmine//:index.bzl", "jasmine_node_test")
3+
load("@npm_bazel_typescript//:defs.bzl", "ts_library")
4+
load("//lib:bundle.bzl", "ES2015_BUNDLES", "ES5_BUNDLES", "ES5_GLOBAL_BUNDLES")
5+
6+
exports_files([
7+
"tsconfig.json",
8+
"tsconfig-node.json",
9+
"angular_license.txt",
10+
])
11+
12+
npm_package(
13+
name = "npm_package",
14+
srcs = [
15+
"CHANGELOG.md",
16+
"LICENSE",
17+
"LICENSE.wrapped",
18+
"README.md",
19+
"package.json",
20+
],
21+
deps = [
22+
"//dist:zone_externs",
23+
"//lib",
24+
] + ["//dist:" + b + "-dist" for b in ES5_BUNDLES] + ["//dist:" + b + "-dist" for b in ES2015_BUNDLES] + ["//dist:" + b + "-dist" for b in ES5_GLOBAL_BUNDLES] + ["//dist:zone_d_ts"],
25+
)
26+
27+
ts_library(
28+
name = "npm_package_spec_lib",
29+
testonly = True,
30+
srcs = ["test/npm_package/npm_package.spec.ts"],
31+
deps = [
32+
"@npm//@types",
33+
],
34+
)
35+
36+
jasmine_node_test(
37+
name = "test_npm_package",
38+
srcs = [":npm_package_spec_lib"],
39+
data = [
40+
":npm_package",
41+
"@npm//shelljs",
42+
],
43+
)

WORKSPACE

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
2+
3+
http_archive(
4+
name = "build_bazel_rules_nodejs",
5+
sha256 = "4c702ffeeab2d24dd4101601b6d27cf582d2e0d4cdc3abefddd4834664669b6b",
6+
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.28.0/rules_nodejs-0.28.0.tar.gz"],
7+
)
8+
9+
load("@build_bazel_rules_nodejs//:defs.bzl", "yarn_install")
10+
11+
yarn_install(
12+
name = "npm",
13+
exclude_packages = [
14+
# Don't need to run Bazel under Bazel
15+
"@bazel/bazel",
16+
"@bazel/ibazel",
17+
"@bazel/buildifier",
18+
],
19+
package_json = "//:package.json",
20+
yarn_lock = "//:yarn.lock",
21+
)
22+
23+
load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies")
24+
25+
install_bazel_dependencies()
26+
27+
load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies")
28+
29+
rules_karma_dependencies()
30+
31+
load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories")
32+
33+
web_test_repositories()
34+
35+
load("@npm_bazel_karma//:browser_repositories.bzl", "browser_repositories")
36+
37+
browser_repositories()

angular_license.txt

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/**
2+
* @license
3+
* Copyright Google Inc. All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.io/license
7+
*/

dist/BUILD.bazel

+121
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
load("@build_bazel_rules_nodejs//:defs.bzl", "rollup_bundle")
2+
load("//lib:bundle.bzl", "ES2015_BUNDLES", "ES5_BUNDLES", "ES5_GLOBAL_BUNDLES")
3+
4+
package(default_visibility = ["//:__subpackages__"])
5+
6+
# copy this file from //lib to //dist
7+
genrule(
8+
name = "zone_externs",
9+
srcs = ["//lib:closure/zone_externs.js"],
10+
outs = ["zone_externs.js"],
11+
cmd = "cp $< $@",
12+
)
13+
14+
genrule(
15+
name = "zone_d_ts",
16+
srcs = ["//lib"],
17+
outs = ["zone.js.d.ts"],
18+
cmd = "rsync -ul $(SRCS) $(@D) && mv $(@D)/zone.d.ts $(@D)/zone.js.d.ts",
19+
)
20+
21+
[
22+
rollup_bundle(
23+
name = b[0] + "-rollup",
24+
entry_point = b[1],
25+
globals = {
26+
"electron": "electron",
27+
},
28+
deps = [
29+
"//lib",
30+
],
31+
license_banner = "//:angular_license.txt",
32+
)
33+
for b in ES5_BUNDLES.items()
34+
]
35+
36+
[
37+
rollup_bundle(
38+
name = b[0] + "-rollup",
39+
entry_point = b[1],
40+
global_name = "Zone",
41+
deps = [
42+
"//lib",
43+
],
44+
license_banner = "//:angular_license.txt",
45+
)
46+
for b in ES5_GLOBAL_BUNDLES.items() + ES2015_BUNDLES.items()
47+
]
48+
49+
# the es5 filegroups
50+
[
51+
filegroup(
52+
name = b[0] + ".es5",
53+
srcs = [":" + b[0] + "-rollup"],
54+
output_group = "es5_umd",
55+
)
56+
for b in ES5_BUNDLES.items() + ES5_GLOBAL_BUNDLES.items()
57+
]
58+
59+
# the es5.min filegroups
60+
[
61+
filegroup(
62+
name = b[0] + ".es5.min",
63+
srcs = [":" + b[0] + "-rollup"],
64+
output_group = "es5_umd_min",
65+
)
66+
for b in ES5_BUNDLES.items() + ES5_GLOBAL_BUNDLES.items()
67+
]
68+
69+
# the es2015 filegroups
70+
[
71+
filegroup(
72+
name = b + ".umd",
73+
srcs = [":" + b + "-rollup"],
74+
output_group = "umd",
75+
)
76+
for b in ES2015_BUNDLES
77+
]
78+
79+
# the es2015.min filegroups
80+
[
81+
filegroup(
82+
name = b + ".umd.min",
83+
srcs = [":" + b + "-rollup"],
84+
output_group = "umd_min",
85+
)
86+
for b in ES2015_BUNDLES
87+
]
88+
89+
# Extract and rename each es5 bundle to a .js and .min.js in the dist/ dir
90+
[
91+
genrule(
92+
name = b[0] + "-dist",
93+
srcs = [b[0] + ".es5", b[0] + ".es5.min"],
94+
outs = [b[0] + ".js", b[0] + ".min.js"],
95+
cmd = " && ".join([
96+
"mkdir -p $(@D)",
97+
"mv $(locations :" + b[0] + ".es5) $(@D)/",
98+
"mv $(locations :" + b[0] + ".es5.min) $(@D)/",
99+
"mv $(@D)/" + b[0] + "-rollup.es5umd.js $(@D)/" + b[0] + ".js",
100+
"mv $(@D)/" + b[0] + "-rollup.min.es5umd.js $(@D)/" + b[0] + ".min.js",
101+
]),
102+
)
103+
for b in ES5_BUNDLES.items() + ES5_GLOBAL_BUNDLES.items()
104+
]
105+
106+
# Extract and rename each es2015 bundle to a .js and .min.js in the dist/ dir
107+
[
108+
genrule(
109+
name = b + "-dist",
110+
srcs = [b + ".umd", b + ".umd.min"],
111+
outs = [b + ".js", b + ".min.js"],
112+
cmd = " && ".join([
113+
"mkdir -p $(@D)",
114+
"mv $(locations :" + b + ".umd) $(@D)/",
115+
"mv $(locations :" + b + ".umd.min) $(@D)/",
116+
"mv $(@D)/" + b + "-rollup.umd.js $(@D)/" + b + ".js",
117+
"mv $(@D)/" + b + "-rollup.min.umd.js $(@D)/" + b + ".min.js",
118+
]),
119+
)
120+
for b in ES2015_BUNDLES
121+
]

0 commit comments

Comments
 (0)