mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
Previously devtools used a nested workspace for its bazel configurations. This meant framework dependencies were consumed via npm. Now devtools is part of the root bazel directory that all other files in this codebase fall under. This allows us to build devtools using local angular packages, removing the need to consume these dependencies with npn. This is useful because we no longer have to update these dependencies with an automated tool like renovate, and our CI tests will always run against the most up to date framework packages.
326 lines
20 KiB
Text
326 lines
20 KiB
Text
load("//devtools/tools:ng_module.bzl", "ng_module")
|
|
load("@io_bazel_rules_sass//:defs.bzl", "sass_binary", "sass_library")
|
|
load("@build_bazel_rules_nodejs//:index.bzl", "pkg_web")
|
|
load("//tools:defaults.bzl", "esbuild")
|
|
load("//devtools/tools/dev-server:index.bzl", "dev_server")
|
|
load("//devtools/tools/esbuild:index.bzl", "LINKER_PROCESSED_FW_PACKAGES")
|
|
|
|
package(default_visibility = ["//visibility:public"])
|
|
|
|
sass_library(
|
|
name = "material_theming",
|
|
srcs = [
|
|
"@npm//:node_modules/@angular/cdk/_index.scss",
|
|
"@npm//:node_modules/@angular/cdk/a11y/_index.import.scss",
|
|
"@npm//:node_modules/@angular/cdk/a11y/_index.scss",
|
|
"@npm//:node_modules/@angular/cdk/overlay/_index.import.scss",
|
|
"@npm//:node_modules/@angular/cdk/overlay/_index.scss",
|
|
"@npm//:node_modules/@angular/cdk/overlay/_index-deprecated.scss",
|
|
"@npm//:node_modules/@angular/cdk/text-field/_index.import.scss",
|
|
"@npm//:node_modules/@angular/cdk/text-field/_index.scss",
|
|
"@npm//:node_modules/@angular/material/_index.scss",
|
|
"@npm//:node_modules/@angular/material/_theming.scss",
|
|
"@npm//:node_modules/@angular/material/autocomplete/_autocomplete-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/autocomplete/_autocomplete-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/autocomplete/_autocomplete-theme.scss",
|
|
"@npm//:node_modules/@angular/material/badge/_badge-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/badge/_badge-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/badge/_badge-theme.scss",
|
|
"@npm//:node_modules/@angular/material/bottom-sheet/_bottom-sheet-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/bottom-sheet/_bottom-sheet-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/bottom-sheet/_bottom-sheet-theme.scss",
|
|
"@npm//:node_modules/@angular/material/button-toggle/_button-toggle-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/button-toggle/_button-toggle-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/button-toggle/_button-toggle-theme.scss",
|
|
"@npm//:node_modules/@angular/material/button-toggle/_button-toggle-variables.import.scss",
|
|
"@npm//:node_modules/@angular/material/button-toggle/_button-toggle-variables.scss",
|
|
"@npm//:node_modules/@angular/material/button/_button-base.import.scss",
|
|
"@npm//:node_modules/@angular/material/button/_button-base.scss",
|
|
"@npm//:node_modules/@angular/material/button/_button-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/button/_button-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/button/_button-theme.scss",
|
|
"@npm//:node_modules/@angular/material/card/_card-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/card/_card-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/card/_card-theme.scss",
|
|
"@npm//:node_modules/@angular/material/checkbox/_checkbox-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/checkbox/_checkbox-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/checkbox/_checkbox-theme.scss",
|
|
"@npm//:node_modules/@angular/material/chips/_chips-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/chips/_chips-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/chips/_chips-theme.scss",
|
|
"@npm//:node_modules/@angular/material/core/_core.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/_core.scss",
|
|
"@npm//:node_modules/@angular/material/core/_core-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/core/_core-theme.scss",
|
|
"@npm//:node_modules/@angular/material/core/color/_all-color.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/color/_all-color.scss",
|
|
"@npm//:node_modules/@angular/material/core/color/_color-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/core/density/private/_all-density.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/density/private/_all-density.scss",
|
|
"@npm//:node_modules/@angular/material/core/density/private/_compatibility.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/density/private/_compatibility.scss",
|
|
"@npm//:node_modules/@angular/material/core/density/private/_density-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/core/focus-indicators/_focus-indicators.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/focus-indicators/_focus-indicators.scss",
|
|
"@npm//:node_modules/@angular/material/core/focus-indicators/_focus-indicators-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/core/focus-indicators/_focus-indicators-theme.scss",
|
|
"@npm//:node_modules/@angular/material/core/option/_optgroup-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/option/_optgroup-theme.scss",
|
|
"@npm//:node_modules/@angular/material/core/option/_option-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/core/option/_option-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/option/_option-theme.scss",
|
|
"@npm//:node_modules/@angular/material/core/ripple/_ripple.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/ripple/_ripple.scss",
|
|
"@npm//:node_modules/@angular/material/core/ripple/_ripple-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/core/ripple/_ripple-theme.scss",
|
|
"@npm//:node_modules/@angular/material/core/selection/pseudo-checkbox/_pseudo-checkbox-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_button-common.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_button-common.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_checkbox-common.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_checkbox-common.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_elevation.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_elevation.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_form-common.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_form-common.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_layout-common.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_layout-common.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_list-common.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_list-common.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_menu-common.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_menu-common.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_private.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_private.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_style-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_variables.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_variables.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_vendor-prefixes.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/style/_vendor-prefixes.scss",
|
|
"@npm//:node_modules/@angular/material/core/theming/_all-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/theming/_all-theme.scss",
|
|
"@npm//:node_modules/@angular/material/core/theming/_palette.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/theming/_palette.scss",
|
|
"@npm//:node_modules/@angular/material/core/theming/_palette-deprecated.scss",
|
|
"@npm//:node_modules/@angular/material/core/theming/_theming.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/theming/_theming.scss",
|
|
"@npm//:node_modules/@angular/material/core/theming/_theming-deprecated.scss",
|
|
"@npm//:node_modules/@angular/material/core/theming/_theming-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/core/typography/_all-typography.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/typography/_all-typography.scss",
|
|
"@npm//:node_modules/@angular/material/core/typography/_typography.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/typography/_typography.scss",
|
|
"@npm//:node_modules/@angular/material/core/typography/_typography-deprecated.scss",
|
|
"@npm//:node_modules/@angular/material/core/typography/_typography-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/core/typography/_typography-utils.import.scss",
|
|
"@npm//:node_modules/@angular/material/core/typography/_typography-utils.scss",
|
|
"@npm//:node_modules/@angular/material/core/typography/_typography-utils-deprecated.scss",
|
|
"@npm//:node_modules/@angular/material/datepicker/_datepicker-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/datepicker/_datepicker-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/datepicker/_datepicker-theme.scss",
|
|
"@npm//:node_modules/@angular/material/dialog/_dialog-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/dialog/_dialog-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/dialog/_dialog-theme.scss",
|
|
"@npm//:node_modules/@angular/material/divider/_divider-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/divider/_divider-offset.import.scss",
|
|
"@npm//:node_modules/@angular/material/divider/_divider-offset.scss",
|
|
"@npm//:node_modules/@angular/material/divider/_divider-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/divider/_divider-theme.scss",
|
|
"@npm//:node_modules/@angular/material/expansion/_expansion-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/expansion/_expansion-mixins.import.scss",
|
|
"@npm//:node_modules/@angular/material/expansion/_expansion-mixins.scss",
|
|
"@npm//:node_modules/@angular/material/expansion/_expansion-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/expansion/_expansion-theme.scss",
|
|
"@npm//:node_modules/@angular/material/expansion/_expansion-variables.import.scss",
|
|
"@npm//:node_modules/@angular/material/expansion/_expansion-variables.scss",
|
|
"@npm//:node_modules/@angular/material/form-field/_form-field-fill-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/form-field/_form-field-fill-theme.scss",
|
|
"@npm//:node_modules/@angular/material/form-field/_form-field-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/form-field/_form-field-legacy-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/form-field/_form-field-legacy-theme.scss",
|
|
"@npm//:node_modules/@angular/material/form-field/_form-field-outline-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/form-field/_form-field-outline-theme.scss",
|
|
"@npm//:node_modules/@angular/material/form-field/_form-field-standard-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/form-field/_form-field-standard-theme.scss",
|
|
"@npm//:node_modules/@angular/material/form-field/_form-field-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/form-field/_form-field-theme.scss",
|
|
"@npm//:node_modules/@angular/material/grid-list/_grid-list-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/grid-list/_grid-list-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/grid-list/_grid-list-theme.scss",
|
|
"@npm//:node_modules/@angular/material/icon/_icon-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/icon/_icon-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/icon/_icon-theme.scss",
|
|
"@npm//:node_modules/@angular/material/input/_input-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/input/_input-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/input/_input-theme.scss",
|
|
"@npm//:node_modules/@angular/material/list/_list-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/list/_list-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/list/_list-theme.scss",
|
|
"@npm//:node_modules/@angular/material/menu/_menu-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/menu/_menu-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/menu/_menu-theme.scss",
|
|
"@npm//:node_modules/@angular/material/paginator/_paginator-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/paginator/_paginator-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/paginator/_paginator-theme.scss",
|
|
"@npm//:node_modules/@angular/material/paginator/_paginator-variables.import.scss",
|
|
"@npm//:node_modules/@angular/material/paginator/_paginator-variables.scss",
|
|
"@npm//:node_modules/@angular/material/progress-bar/_progress-bar-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/progress-bar/_progress-bar-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/progress-bar/_progress-bar-theme.scss",
|
|
"@npm//:node_modules/@angular/material/progress-spinner/_progress-spinner-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/progress-spinner/_progress-spinner-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/progress-spinner/_progress-spinner-theme.scss",
|
|
"@npm//:node_modules/@angular/material/radio/_radio-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/radio/_radio-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/radio/_radio-theme.scss",
|
|
"@npm//:node_modules/@angular/material/select/_select-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/select/_select-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/select/_select-theme.scss",
|
|
"@npm//:node_modules/@angular/material/sidenav/_sidenav-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/sidenav/_sidenav-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/sidenav/_sidenav-theme.scss",
|
|
"@npm//:node_modules/@angular/material/slide-toggle/_slide-toggle-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/slide-toggle/_slide-toggle-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/slide-toggle/_slide-toggle-theme.scss",
|
|
"@npm//:node_modules/@angular/material/slider/_slider-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/slider/_slider-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/slider/_slider-theme.scss",
|
|
"@npm//:node_modules/@angular/material/snack-bar/_snack-bar-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/snack-bar/_snack-bar-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/snack-bar/_snack-bar-theme.scss",
|
|
"@npm//:node_modules/@angular/material/sort/_sort-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/sort/_sort-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/sort/_sort-theme.scss",
|
|
"@npm//:node_modules/@angular/material/stepper/_stepper-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/stepper/_stepper-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/stepper/_stepper-theme.scss",
|
|
"@npm//:node_modules/@angular/material/stepper/_stepper-variables.import.scss",
|
|
"@npm//:node_modules/@angular/material/stepper/_stepper-variables.scss",
|
|
"@npm//:node_modules/@angular/material/table/_table-flex-styles.import.scss",
|
|
"@npm//:node_modules/@angular/material/table/_table-flex-styles.scss",
|
|
"@npm//:node_modules/@angular/material/table/_table-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/table/_table-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/table/_table-theme.scss",
|
|
"@npm//:node_modules/@angular/material/tabs/_tabs-common.import.scss",
|
|
"@npm//:node_modules/@angular/material/tabs/_tabs-common.scss",
|
|
"@npm//:node_modules/@angular/material/tabs/_tabs-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/tabs/_tabs-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/tabs/_tabs-theme.scss",
|
|
"@npm//:node_modules/@angular/material/toolbar/_toolbar-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/toolbar/_toolbar-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/toolbar/_toolbar-theme.scss",
|
|
"@npm//:node_modules/@angular/material/toolbar/_toolbar-variables.import.scss",
|
|
"@npm//:node_modules/@angular/material/toolbar/_toolbar-variables.scss",
|
|
"@npm//:node_modules/@angular/material/tooltip/_tooltip-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/tooltip/_tooltip-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/tooltip/_tooltip-theme.scss",
|
|
"@npm//:node_modules/@angular/material/tree/_tree-legacy-index.scss",
|
|
"@npm//:node_modules/@angular/material/tree/_tree-theme.import.scss",
|
|
"@npm//:node_modules/@angular/material/tree/_tree-theme.scss",
|
|
"@npm//:node_modules/@angular/material/tree/_tree-variables.import.scss",
|
|
"@npm//:node_modules/@angular/material/tree/_tree-variables.scss",
|
|
],
|
|
)
|
|
|
|
sass_binary(
|
|
name = "demo_styles",
|
|
src = "styles.scss",
|
|
sourcemap = False,
|
|
deps = [":material_theming"],
|
|
)
|
|
|
|
ng_module(
|
|
name = "demo",
|
|
srcs = ["main.ts"],
|
|
deps = [
|
|
"//devtools/src/app",
|
|
"//packages/common",
|
|
"//packages/common/http",
|
|
"//packages/core",
|
|
"//packages/core/src/util",
|
|
"//packages/platform-browser",
|
|
"@npm//@types",
|
|
"@npm//rxjs",
|
|
],
|
|
)
|
|
|
|
esbuild(
|
|
name = "bundle",
|
|
config = "//devtools/tools/esbuild:esbuild_config_esm",
|
|
entry_points = [":main.ts"],
|
|
platform = "browser",
|
|
splitting = True,
|
|
target = "es2016",
|
|
deps = LINKER_PROCESSED_FW_PACKAGES + [":demo"],
|
|
)
|
|
|
|
exports_files(["index.html"])
|
|
|
|
filegroup(
|
|
name = "dev_app_static_files",
|
|
srcs = [
|
|
":demo_styles",
|
|
":index.html",
|
|
"//packages/zone.js/bundles:zone.umd.js",
|
|
],
|
|
)
|
|
|
|
pkg_web(
|
|
name = "devapp",
|
|
srcs = [":dev_app_static_files"] + [
|
|
":bundle",
|
|
"@npm//:node_modules/tslib/tslib.js",
|
|
],
|
|
# Currently, ibazel doesn't allow passing in flags to bazel run.
|
|
# This means we are not able to use --config snapshot
|
|
# to access the current commit SHA.
|
|
# Since we still want to be able to use ibazel to speed up
|
|
# local development, we supply an empty string for the SHA substitution.
|
|
# This does not effect production builds.
|
|
substitutions = {"BUILD_SCM_COMMIT_SHA": ""},
|
|
)
|
|
|
|
dev_server(
|
|
name = "devserver",
|
|
srcs = [":dev_app_static_files"],
|
|
additional_root_paths = ["angular/devtools/src/devapp"],
|
|
tags = ["manual"],
|
|
deps = [
|
|
":devapp",
|
|
],
|
|
)
|
|
|
|
ng_module(
|
|
name = "demo_application_environment",
|
|
srcs = ["demo-application-environment.ts"],
|
|
deps = [
|
|
"//devtools/projects/ng-devtools",
|
|
"//devtools/src/environments",
|
|
],
|
|
)
|
|
|
|
ng_module(
|
|
name = "demo_application_operations",
|
|
srcs = ["demo-application-operations.ts"],
|
|
deps = [
|
|
"//devtools/projects/ng-devtools",
|
|
"//devtools/projects/protocol",
|
|
],
|
|
)
|
|
|
|
ng_module(
|
|
name = "iframe_message_bus",
|
|
srcs = ["iframe-message-bus.ts"],
|
|
deps = [
|
|
"//devtools/projects/protocol",
|
|
],
|
|
)
|
|
|
|
ng_module(
|
|
name = "zone-unaware-iframe_message_bus",
|
|
srcs = ["zone-unaware-iframe-message-bus.ts"],
|
|
deps = [
|
|
":iframe_message_bus",
|
|
"//devtools/projects/protocol",
|
|
],
|
|
)
|