mirror of
https://github.com/angular/angular-cli.git
synced 2025-05-28 11:10:12 +08:00
This commit introduces a new server routing configuration API, as discussed in RFC https://github.com/angular/angular/discussions/56785. The new API provides several enhancements: ```ts const serverRoutes: ServerRoute[] = [ { path: '/error', renderMode: RenderMode.Server, status: 404, headers: { 'Cache-Control': 'no-cache' } } ]; ``` ```ts const serverRoutes: ServerRoute[] = [ { path: '/product/:id', renderMode: RenderMode.Prerender, async getPrerenderPaths() { const dataService = inject(ProductService); const ids = await dataService.getIds(); // Assuming this returns ['1', '2', '3'] return ids.map(id => ({ id })); // Generates paths like: [{ id: '1' }, { id: '2' }, { id: '3' }] } } ]; ``` ```ts const serverRoutes: ServerRoute[] = [ { path: '/product/:id', renderMode: RenderMode.Prerender, fallback: PrerenderFallback.Server, // Can be Server, Client, or None async getPrerenderPaths() { } } ]; ``` ```ts const serverRoutes: ServerRoute[] = [ { path: '/product/:id', renderMode: RenderMode.Server, }, { path: '/error', renderMode: RenderMode.Client, }, { path: '/**', renderMode: RenderMode.Prerender, }, ]; ``` These additions aim to provide greater flexibility and control over server-side rendering configurations and prerendering behaviors.
80 lines
2.0 KiB
Python
80 lines
2.0 KiB
Python
load("@npm//@angular/build-tooling/bazel/api-golden:index.bzl", "api_golden_test", "api_golden_test_npm_package")
|
|
load("@rules_pkg//:pkg.bzl", "pkg_tar")
|
|
load("//tools:defaults.bzl", "ng_package", "ts_library")
|
|
|
|
package(default_visibility = ["//visibility:public"])
|
|
|
|
ts_library(
|
|
name = "ssr",
|
|
package_name = "@angular/ssr",
|
|
srcs = glob(
|
|
include = [
|
|
"*.ts",
|
|
"src/**/*.ts",
|
|
],
|
|
exclude = [
|
|
"**/*_spec.ts",
|
|
],
|
|
),
|
|
module_name = "@angular/ssr",
|
|
tsconfig = "//:tsconfig-build-ng",
|
|
deps = [
|
|
"//packages/angular/ssr/third_party/critters:bundled_critters_lib",
|
|
"@npm//@angular/common",
|
|
"@npm//@angular/core",
|
|
"@npm//@angular/platform-server",
|
|
"@npm//@angular/router",
|
|
],
|
|
)
|
|
|
|
ng_package(
|
|
name = "npm_package",
|
|
package_name = "@angular/ssr",
|
|
srcs = [
|
|
":package.json",
|
|
"//packages/angular/ssr/third_party/critters:bundled_critters_lib",
|
|
],
|
|
externals = [
|
|
"@angular/ssr",
|
|
"@angular/ssr/node",
|
|
"../../third_party/critters",
|
|
],
|
|
nested_packages = [
|
|
"//packages/angular/ssr/schematics:npm_package",
|
|
],
|
|
tags = ["release-package"],
|
|
deps = [
|
|
":ssr",
|
|
"//packages/angular/ssr/node",
|
|
],
|
|
)
|
|
|
|
pkg_tar(
|
|
name = "npm_package_archive",
|
|
srcs = [":npm_package"],
|
|
extension = "tgz",
|
|
strip_prefix = "./npm_package",
|
|
# should not be built unless it is a dependency of another rule
|
|
tags = ["manual"],
|
|
)
|
|
|
|
api_golden_test_npm_package(
|
|
name = "ssr_api",
|
|
data = [
|
|
":npm_package",
|
|
"//goldens:public-api",
|
|
],
|
|
golden_dir = "angular_cli/goldens/public-api/angular/ssr",
|
|
npm_package = "angular_cli/packages/angular/ssr/npm_package",
|
|
)
|
|
|
|
api_golden_test(
|
|
name = "ssr_transitive_api",
|
|
data = [
|
|
":ssr",
|
|
"//goldens:public-api",
|
|
],
|
|
entry_point = "angular_cli/packages/angular/ssr/public_api_transitive.d.ts",
|
|
golden = "angular_cli/goldens/public-api/angular/ssr/index_transitive.api.md",
|
|
)
|