Skip to content

Commit 1f3331f

Browse files
gregmagolanIgorMinar
authored andcommitted
build(bazel): use fine-grained npm deps (angular#26111) (angular#26488)
PR Close angular#26488
1 parent b6c9678 commit 1f3331f

File tree

104 files changed

+6704
-1837
lines changed

Some content is hidden

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

104 files changed

+6704
-1837
lines changed

BUILD.bazel

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,31 +15,47 @@ alias(
1515
actual = "@nodejs//:yarn",
1616
)
1717

18-
alias(
19-
name = "node_modules",
20-
actual = "@angular_deps//:node_modules",
21-
)
22-
2318
filegroup(
2419
name = "web_test_bootstrap_scripts",
2520
# do not sort
2621
srcs = [
27-
"@angular_deps//:node_modules/reflect-metadata/Reflect.js",
28-
"@angular_deps//:node_modules/zone.js/dist/zone.js",
29-
"@angular_deps//:node_modules/zone.js/dist/zone-testing.js",
30-
"@angular_deps//:node_modules/zone.js/dist/task-tracking.js",
22+
"@ngdeps//node_modules/reflect-metadata:Reflect.js",
23+
"@ngdeps//node_modules/zone.js:dist/zone.js",
24+
"@ngdeps//node_modules/zone.js:dist/zone-testing.js",
25+
"@ngdeps//node_modules/zone.js:dist/task-tracking.js",
3126
"//:test-events.js",
3227
],
3328
)
3429

3530
filegroup(
3631
name = "angularjs_scripts",
3732
srcs = [
38-
"@angular_deps//:node_modules/angular-1.5/angular.js",
39-
"@angular_deps//:node_modules/angular-1.6/angular.js",
40-
"@angular_deps//:node_modules/angular-mocks-1.5/angular-mocks.js",
41-
"@angular_deps//:node_modules/angular-mocks-1.6/angular-mocks.js",
42-
"@angular_deps//:node_modules/angular-mocks/angular-mocks.js",
43-
"@angular_deps//:node_modules/angular/angular.js",
33+
"@ngdeps//node_modules/angular:angular.js",
34+
"@ngdeps//node_modules/angular-1.5:angular.js",
35+
"@ngdeps//node_modules/angular-1.6:angular.js",
36+
"@ngdeps//node_modules/angular-mocks:angular-mocks.js",
37+
"@ngdeps//node_modules/angular-mocks-1.5:angular-mocks.js",
38+
"@ngdeps//node_modules/angular-mocks-1.6:angular-mocks.js",
4439
],
4540
)
41+
42+
load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary")
43+
44+
# Override for ts_web_test_suite to use @ngdeps instead of @npm
45+
nodejs_binary(
46+
name = "@bazel/karma/karma",
47+
data = ["@ngdeps//@bazel/karma"],
48+
entry_point = "@bazel/karma/karma.js",
49+
install_source_map_support = False,
50+
visibility = ["//visibility:public"],
51+
)
52+
53+
# Override for ts_library to use @ngdeps instead of @npm
54+
nodejs_binary(
55+
name = "@bazel/typescript/tsc_wrapped",
56+
data = ["@ngdeps//@bazel/typescript"],
57+
entry_point = "@bazel/typescript/tsc_wrapped/tsc_wrapped.js",
58+
install_source_map_support = False,
59+
templated_args = ["--node_options=--expose-gc"],
60+
visibility = ["//visibility:public"],
61+
)

WORKSPACE

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@ local_repository(
4040
#
4141
# Load and install our dependencies downloaded above.
4242
#
43-
44-
load("@build_bazel_rules_nodejs//:defs.bzl", "check_bazel_version", "node_repositories")
43+
load("@build_bazel_rules_nodejs//:defs.bzl", "check_bazel_version", "node_repositories", "yarn_install")
4544

4645
check_bazel_version("0.17.0", """
4746
If you are on a Mac and using Homebrew, there is a breaking change to the installation in Bazel 0.16
@@ -56,6 +55,12 @@ node_repositories(
5655
yarn_version = "1.9.2",
5756
)
5857

58+
yarn_install(
59+
name = "npm",
60+
package_json = "//tools:npm/package.json",
61+
yarn_lock = "//tools:npm/yarn.lock",
62+
)
63+
5964
load("@io_bazel_rules_go//go:def.bzl", "go_rules_dependencies", "go_register_toolchains")
6065

6166
go_rules_dependencies()

integration/bazel/BUILD.bazel

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,3 @@ alias(
1111
name = "tsconfig.json",
1212
actual = "//src:tsconfig.json",
1313
)
14-
15-
filegroup(
16-
name = "node_modules",
17-
srcs = glob(
18-
[
19-
# Include only .js, .json & .d.ts files to reduce the number of
20-
# files in the //:node_modules filegroup
21-
"node_modules/**/*.js",
22-
"node_modules/**/*.json",
23-
"node_modules/**/*.d.ts",
24-
# All the files in the http-server package are necesssary
25-
"node_modules/http-server/**",
26-
# All the files in the protractor package are necesssary
27-
"node_modules/protractor/**",
28-
# Also include all files in node_modules/.bin
29-
"node_modules/.bin/*",
30-
],
31-
exclude = [
32-
# Exclude files with spaces which are illegal bazel labels
33-
"node_modules/**/* *",
34-
],
35-
),
36-
)

integration/bazel/WORKSPACE

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,6 @@ workspace(name = "bazel_integration_test")
33
#
44
# Download Bazel toolchain dependencies as needed by build actions
55
#
6-
local_repository(
7-
name = "build_bazel_rules_typescript",
8-
path = "node_modules/@bazel/typescript",
9-
)
10-
load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies")
11-
rules_typescript_dependencies()
12-
13-
http_archive(
14-
name = "io_bazel_rules_sass",
15-
url = "https://github.com/bazelbuild/rules_sass/archive/1.11.0.zip",
16-
strip_prefix = "rules_sass-1.11.0",
17-
sha256 = "dbe9fb97d5a7833b2a733eebc78c9c1e3880f676ac8af16e58ccf2139cbcad03",
18-
)
19-
20-
#
21-
# Point Bazel to WORKSPACEs that live in subdirectories
22-
#
236

247
local_repository(
258
name = "angular",
@@ -31,11 +14,15 @@ local_repository(
3114
path = "node_modules/rxjs/src",
3215
)
3316

17+
load("@angular//packages/bazel:package.bzl", "rules_angular_dependencies")
18+
19+
rules_angular_dependencies()
20+
3421
#
35-
# Load and install our dependencies downloaded above.
22+
# Setup dependencies loaded above
3623
#
3724

38-
load("@build_bazel_rules_nodejs//:defs.bzl", "check_bazel_version", "node_repositories")
25+
load("@build_bazel_rules_nodejs//:defs.bzl", "check_bazel_version", "node_repositories", "yarn_install")
3926

4027
check_bazel_version("0.17.0")
4128
node_repositories(
@@ -44,6 +31,12 @@ node_repositories(
4431
yarn_version = "1.9.2",
4532
)
4633

34+
yarn_install(
35+
name = "npm",
36+
package_json = "//:package.json",
37+
yarn_lock = "//:yarn.lock",
38+
)
39+
4740
load("@io_bazel_rules_go//go:def.bzl", "go_rules_dependencies", "go_register_toolchains")
4841

4942
go_rules_dependencies()

integration/bazel/package.json

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,23 @@
44
"version": "0.0.0",
55
"license": "MIT",
66
"dependencies": {
7-
"reflect-metadata": "file:../../node_modules/reflect-metadata",
8-
"rxjs": "file:../../node_modules/rxjs",
9-
"tslib": "file:../../node_modules/tslib",
10-
"zone.js": "file:../../node_modules/zone.js"
7+
"reflect-metadata": "0.1.12",
8+
"rxjs": "6.0.0",
9+
"tslib": "1.9.3",
10+
"zone.js": "0.8.26"
1111
},
1212
"devDependencies": {
13-
"@bazel/typescript": "0.17.0",
14-
"@types/jasmine": "file:../../node_modules/@types/jasmine",
13+
"@bazel/karma": "0.19.1",
14+
"@bazel/typescript": "0.19.1",
15+
"@types/jasmine": "2.8.8",
1516
"@types/source-map": "0.5.1",
16-
"protractor": "file:../../node_modules/protractor",
17-
"tsickle": "file:../../node_modules/tsickle",
18-
"typescript": "file:../../node_modules/typescript"
17+
"protractor": "5.1.2",
18+
"shelljs": "^0.8.2",
19+
"tsickle": "0.32.0",
20+
"typescript": "3.0.1"
1921
},
2022
"scripts": {
23+
"//": "TODO(gmagolan): figure out how to keep dependencies here up to date with the root package.json",
2124
"test": "bazel build ... --noshow_progress && bazel test ..."
2225
}
2326
}

integration/bazel/src/BUILD.bazel

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ ng_module(
1313
"@angular//packages/common/http",
1414
"@angular//packages/core",
1515
"@angular//packages/platform-browser",
16+
"@npm//@types",
1617
],
1718
)
1819

@@ -21,14 +22,14 @@ load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
2122
ts_devserver(
2223
name = "devserver",
2324
additional_root_paths = [
24-
"bazel_integration_test/node_modules/tslib",
25-
"bazel_integration_test/node_modules/zone.js/dist",
25+
"npm/node_modules/tslib",
26+
"npm/node_modules/zone.js/dist",
2627
],
2728
entry_module = "bazel_integration_test/src/main",
2829
serving_path = "/bundle.min.js",
2930
static_files = [
30-
"//:node_modules/tslib/tslib.js",
31-
"//:node_modules/zone.js/dist/zone.min.js",
31+
"@npm//node_modules/tslib:tslib.js",
32+
"@npm//node_modules/zone.js:dist/zone.min.js",
3233
"index.html",
3334
],
3435
deps = ["//src"],
@@ -39,15 +40,14 @@ load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary", "rollup_bundle")
3940
rollup_bundle(
4041
name = "bundle",
4142
entry_point = "src/main",
42-
node_modules = "//:node_modules",
4343
deps = ["//src"],
4444
)
4545

4646
# Needed because the prodserver only loads static files that appear under this
4747
# package.
4848
genrule(
4949
name = "zone.js",
50-
srcs = ["//:node_modules/zone.js/dist/zone.min.js"],
50+
srcs = ["@npm//node_modules/zone.js:dist/zone.min.js"],
5151
outs = ["zone.min.js"],
5252
cmd = "cp $< $@",
5353
)

integration/bazel/src/hello-world/BUILD.bazel

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ ng_module(
1818
assets = [":hello-world-styles"],
1919
deps = [
2020
"@angular//packages/core",
21+
"@npm//@types",
2122
],
2223
)
2324

2425
ng_package(
2526
name = "npm_package",
2627
entry_point = "src/hello-world/index.js",
27-
node_modules = "//:node_modules",
2828
deps = [":hello-world"],
2929
)
3030

@@ -38,19 +38,23 @@ ts_library(
3838
"@angular//packages/core/testing",
3939
"@angular//packages/platform-browser",
4040
"@angular//packages/platform-browser-dynamic/testing",
41+
"@npm//@types",
42+
"@npm//jasmine",
4143
],
4244
)
4345

4446
ts_web_test_suite(
4547
name = "test",
46-
srcs = ["//:node_modules/tslib/tslib.js"],
48+
srcs = ["@npm//node_modules/tslib:tslib.js"],
4749
bootstrap = [
48-
"//:node_modules/zone.js/dist/zone-testing-bundle.js",
49-
"//:node_modules/reflect-metadata/Reflect.js",
50+
"@npm//node_modules/zone.js:dist/zone-testing-bundle.js",
51+
"@npm//node_modules/reflect-metadata:Reflect.js",
5052
],
5153
browsers = [
5254
"@io_bazel_rules_webtesting//browsers:chromium-local",
53-
"@io_bazel_rules_webtesting//browsers:firefox-local",
55+
# TODO(gregmagolan): re-enable firefox testing once fixed
56+
# See https://github.com/bazelbuild/rules_typescript/issues/296
57+
# "@io_bazel_rules_webtesting//browsers:firefox-local",
5458
],
5559
deps = [
5660
":test_lib",

integration/bazel/test/e2e/BUILD.bazel

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,31 @@ ts_library(
66
testonly = 1,
77
srcs = ["app.spec.ts"],
88
tsconfig = ":tsconfig.json",
9+
deps = [
10+
"@npm//@types",
11+
"@npm//protractor",
12+
],
913
)
1014

1115
ts_library(
1216
name = "ts_on_prepare",
1317
testonly = 1,
1418
srcs = ["on-prepare.ts"],
1519
tsconfig = ":tsconfig.json",
16-
deps = ["@angular//packages/bazel/src/protractor/utils"],
20+
deps = [
21+
"@angular//packages/bazel/src/protractor/utils",
22+
"@npm//@types",
23+
"@npm//protractor",
24+
],
1725
)
1826

1927
protractor_web_test_suite(
2028
name = "devserver_test",
2129
configuration = "//:protractor.conf.js",
22-
data = ["@angular//packages/bazel/src/protractor/utils"],
30+
data = [
31+
"@angular//packages/bazel/src/protractor/utils",
32+
"@npm//protractor",
33+
],
2334
on_prepare = ":ts_on_prepare",
2435
server = "//src:devserver",
2536
deps = [":e2e"],
@@ -28,7 +39,10 @@ protractor_web_test_suite(
2839
protractor_web_test_suite(
2940
name = "prodserver_test",
3041
configuration = "//:protractor.conf.js",
31-
data = ["@angular//packages/bazel/src/protractor/utils"],
42+
data = [
43+
"@angular//packages/bazel/src/protractor/utils",
44+
"@npm//protractor",
45+
],
3246
on_prepare = ":ts_on_prepare",
3347
server = "//src:prodserver",
3448
deps = [":e2e"],

0 commit comments

Comments
 (0)