mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
Restructures the examples build rules so that all examples are exposed through a single file group in adev/src/content/examples. Also adds a separate filegroup in the same location for just the embeddable examples and adds it to the APPLICATION_FILES for the docs app. This uncovered the fact that some of our examples have broken non-compiling code. I've excluded these ones from being embeddable for now, until the breakages can be addressed PR Close #60778
198 lines
4.9 KiB
Text
198 lines
4.9 KiB
Text
load("@bazel_skylib//lib:collections.bzl", "collections")
|
|
load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
|
|
load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin")
|
|
load("@npm//@angular/build-tooling/bazel/http-server:index.bzl", "http_server")
|
|
load("@npm//@angular/build-tooling/bazel/remote-execution:index.bzl", "ENABLE_NETWORK")
|
|
load("@npm//@angular-devkit/architect-cli:index.bzl", "architect", "architect_test")
|
|
load("//adev/tools/local_deps:index.bzl", "ensure_local_package_deps", "link_local_packages")
|
|
|
|
package(default_visibility = ["//visibility:public"])
|
|
|
|
exports_files([
|
|
"tsconfig.json",
|
|
])
|
|
|
|
# All source and configuration files required to build the docs app
|
|
APPLICATION_FILES = [
|
|
"angular.json",
|
|
"tsconfig.app.json",
|
|
"tsconfig.json",
|
|
"tsconfig.worker.json",
|
|
] + glob(
|
|
["src/**/*"],
|
|
exclude = [
|
|
"src/**/*.spec.ts",
|
|
],
|
|
) + [
|
|
"//adev/src/content/examples:embeddable",
|
|
]
|
|
|
|
TEST_FILES = APPLICATION_FILES + [
|
|
"karma.conf.js",
|
|
"test-main.ts",
|
|
"tsconfig.spec.json",
|
|
] + glob(
|
|
["src/**/*.spec.ts"],
|
|
)
|
|
|
|
APPLICATION_ASSETS = [
|
|
"//adev/src/assets/images",
|
|
"//adev/src/assets/previews",
|
|
"//adev/src/assets:tutorials",
|
|
"//adev/src/assets/icons",
|
|
"//adev/src/assets:api",
|
|
"//adev/src/assets:content",
|
|
]
|
|
|
|
APPLICATION_DEPS = [
|
|
"@npm//@angular/docs",
|
|
"@npm//@angular/build",
|
|
"@npm//@angular-devkit/build-angular",
|
|
"@npm//@angular/animations",
|
|
"@npm//@angular/cdk",
|
|
"@npm//@angular/common",
|
|
"@npm//@angular/compiler",
|
|
"@npm//@angular/compiler-cli",
|
|
"@npm//@angular/core",
|
|
"@npm//@angular/forms",
|
|
"@npm//@angular/material",
|
|
"@npm//@angular/platform-browser",
|
|
"@npm//@angular/platform-server",
|
|
"@npm//@angular/router",
|
|
"@npm//@angular/ssr",
|
|
"@npm//marked",
|
|
"@npm//ngx-progressbar",
|
|
"@npm//rxjs",
|
|
"@npm//typescript",
|
|
"@npm//@typescript/vfs",
|
|
"@npm//@codemirror/state",
|
|
"@npm//@codemirror/view",
|
|
"@npm//@codemirror/language",
|
|
"@npm//@codemirror/commands",
|
|
"@npm//@codemirror/search",
|
|
"@npm//@codemirror/autocomplete",
|
|
"@npm//@codemirror/lint",
|
|
"@npm//@codemirror/lang-html",
|
|
"@npm//@codemirror/lang-angular",
|
|
"@npm//@codemirror/lang-css",
|
|
"@npm//@codemirror/lang-sass",
|
|
"@npm//@codemirror/lang-javascript",
|
|
"@npm//@lezer/highlight",
|
|
"@npm//@lezer/javascript",
|
|
"@npm//@lezer/common",
|
|
"@npm//@stackblitz/sdk",
|
|
"@npm//open-in-idx",
|
|
"@npm//@webcontainer/api",
|
|
"@npm//@xterm/xterm",
|
|
"@npm//@xterm/addon-fit",
|
|
"@npm//algoliasearch",
|
|
"@npm//angular-split",
|
|
"@npm//zone.js",
|
|
]
|
|
|
|
TEST_DEPS = APPLICATION_DEPS + [
|
|
"@npm//@angular/platform-browser-dynamic",
|
|
"@npm//@types/jasmine",
|
|
"@npm//@types/node",
|
|
"@npm//jasmine",
|
|
"@npm//jasmine-core",
|
|
"@npm//karma-chrome-launcher",
|
|
"@npm//karma-coverage",
|
|
"@npm//karma-jasmine",
|
|
"@npm//karma-jasmine-html-reporter",
|
|
]
|
|
|
|
# Create `npm_link` targets for all dependencies that correspond to a
|
|
# first-party Angular package that can be built from `HEAD`.
|
|
link_local_packages(
|
|
all_deps = collections.uniq(APPLICATION_DEPS + TEST_DEPS),
|
|
)
|
|
|
|
copy_to_bin(
|
|
name = "application_files_bin",
|
|
srcs = APPLICATION_FILES,
|
|
)
|
|
|
|
bool_flag(
|
|
name = "full_build_adev",
|
|
build_setting_default = False,
|
|
)
|
|
|
|
config_setting(
|
|
name = "prod_build",
|
|
flag_values = {
|
|
":full_build_adev": "true",
|
|
},
|
|
)
|
|
|
|
config_setting(
|
|
name = "dev_build",
|
|
flag_values = {
|
|
":full_build_adev": "false",
|
|
},
|
|
)
|
|
|
|
config_based_architect_env = select({
|
|
":dev_build": {
|
|
"NG_BUILD_PARTIAL_SSR": "1",
|
|
},
|
|
":prod_build": {
|
|
"NG_BUILD_OPTIMIZE_CHUNKS": "1",
|
|
},
|
|
})
|
|
|
|
config_based_architect_flags = select({
|
|
":dev_build": [
|
|
"angular-dev:build:development",
|
|
],
|
|
":prod_build": [
|
|
"angular-dev:build:production",
|
|
],
|
|
})
|
|
|
|
architect(
|
|
name = "build",
|
|
args = config_based_architect_flags + [
|
|
"--output-path=build",
|
|
],
|
|
chdir = "$(RULEDIR)",
|
|
data = ensure_local_package_deps(APPLICATION_DEPS) + APPLICATION_ASSETS + [
|
|
":application_files_bin",
|
|
],
|
|
env = config_based_architect_env,
|
|
# Network is required to inline fonts.
|
|
exec_properties = ENABLE_NETWORK,
|
|
output_dir = True,
|
|
tags = [
|
|
"no-remote-exec",
|
|
],
|
|
)
|
|
|
|
http_server(
|
|
name = "serve",
|
|
additional_root_paths = [
|
|
"angular/adev/build/browser",
|
|
],
|
|
enable_dev_ui = True,
|
|
relax_cors = True,
|
|
deps = [":build"],
|
|
)
|
|
|
|
architect_test(
|
|
name = "test",
|
|
args = [
|
|
"angular-dev:test",
|
|
"--no-watch",
|
|
],
|
|
chdir = package_name(),
|
|
data = ensure_local_package_deps(TEST_DEPS) + TEST_FILES + APPLICATION_ASSETS + [
|
|
"//adev/tools:windows-chromium-path",
|
|
"@npm//@angular/build-tooling/bazel/browsers/chromium",
|
|
],
|
|
env = {
|
|
"CHROME_BIN": "../$(CHROMIUM)",
|
|
},
|
|
toolchains = [
|
|
"@npm//@angular/build-tooling/bazel/browsers/chromium:toolchain_alias",
|
|
],
|
|
)
|