Skip to content

Commit 0fdf498

Browse files
committed
refactor(@schematics/angular): update templates to use express version 5
1 parent 20af866 commit 0fdf498

File tree

16 files changed

+299
-65
lines changed

16 files changed

+299
-65
lines changed

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
"@types/babel__core": "7.20.5",
7474
"@types/babel__generator": "^7.6.8",
7575
"@types/browser-sync": "^2.27.0",
76-
"@types/express": "^4.16.0",
76+
"@types/express": "~5.0.1",
7777
"@types/http-proxy": "^1.17.4",
7878
"@types/ini": "^4.0.0",
7979
"@types/jasmine": "~5.1.0",
@@ -106,7 +106,7 @@
106106
"eslint-config-prettier": "10.1.1",
107107
"eslint-plugin-header": "3.1.1",
108108
"eslint-plugin-import": "2.31.0",
109-
"express": "4.21.2",
109+
"express": "5.1.0",
110110
"fast-glob": "3.3.3",
111111
"globals": "16.0.0",
112112
"http-proxy": "^1.18.1",

packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/proxy_spec.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,12 @@ describe('Serve SSR Builder', () => {
3939
server.set('view engine', 'html');
4040
server.set('views', distFolder);
4141
42-
server.get('*.*', express.static(distFolder, {
43-
maxAge: '1y'
42+
server.use(express.static(distFolder, {
43+
maxAge: '1y',
44+
index: false,
4445
}));
4546
46-
server.get('*', (req, res, next) => {
47+
server.use((req, res, next) => {
4748
commonEngine
4849
.render({
4950
bootstrap: AppServerModule,

packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/ssl_spec.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,12 @@ describe('Serve SSR Builder', () => {
3939
server.set('view engine', 'html');
4040
server.set('views', distFolder);
4141
42-
server.get('*.*', express.static(distFolder, {
43-
maxAge: '1y'
42+
server.use(express.static(distFolder, {
43+
maxAge: '1y',
44+
index: false,
4445
}));
4546
46-
server.get('*', (req, res, next) => {
47+
server.use((req, res, next) => {
4748
commonEngine
4849
.render({
4950
bootstrap: AppServerModule,

packages/angular_devkit/build_angular/src/builders/ssr-dev-server/specs/works_spec.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,12 @@ describe('Serve SSR Builder', () => {
3838
server.set('view engine', 'html');
3939
server.set('views', distFolder);
4040
41-
server.get('*.*', express.static(distFolder, {
42-
maxAge: '1y'
41+
server.use(express.static(distFolder, {
42+
maxAge: '1y',
43+
index: false,
4344
}));
4445
45-
server.get('*', (req, res, next) => {
46+
server.use((req, res, next) => {
4647
commonEngine
4748
.render({
4849
bootstrap: AppServerModule,

packages/schematics/angular/migrations/use-application-builder/migration.ts

-1
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,6 @@ function* updateBuildTarget(
158158

159159
yield externalSchematic('@schematics/angular', 'ssr', {
160160
project: projectName,
161-
skipInstall: true,
162161
});
163162
}
164163
}

packages/schematics/angular/ssr/files/application-builder/server.ts.template

+7-3
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const angularApp = new AngularNodeAppEngine();
1818
*
1919
* Example:
2020
* ```ts
21-
* app.get('/api/**', (req, res) => {
21+
* app.get('/api/{*splat}', (req, res) => {
2222
* // Handle API request
2323
* });
2424
* ```
@@ -38,7 +38,7 @@ app.use(
3838
/**
3939
* Handle all other requests by rendering the Angular application.
4040
*/
41-
app.use('/**', (req, res, next) => {
41+
app.use((req, res, next) => {
4242
angularApp
4343
.handle(req)
4444
.then((response) =>
@@ -53,7 +53,11 @@ app.use('/**', (req, res, next) => {
5353
*/
5454
if (isMainModule(import.meta.url)) {
5555
const port = process.env['PORT'] || 4000;
56-
app.listen(port, () => {
56+
app.listen(port, (error) => {
57+
if (error) {
58+
throw error;
59+
}
60+
5761
console.log(`Node Express server listening on http://localhost:${port}`);
5862
});
5963
}

packages/schematics/angular/ssr/files/server-builder/server.ts.template

+10-5
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,15 @@ export function app(): express.Express {
2121
server.set('views', distFolder);
2222

2323
// Example Express Rest API endpoints
24-
// server.get('/api/**', (req, res) => { });
24+
// server.get('/api/{*splat}', (req, res) => { });
2525
// Serve static files from /browser
26-
server.get('*.*', express.static(distFolder, {
27-
maxAge: '1y'
26+
server.use(express.static(distFolder, {
27+
maxAge: '1y',
28+
index: false,
2829
}));
2930

3031
// All regular routes use the Angular engine
31-
server.get('*', (req, res, next) => {
32+
server.use((req, res, next) => {
3233
const { protocol, originalUrl, baseUrl, headers } = req;
3334

3435
commonEngine
@@ -51,7 +52,11 @@ function run(): void {
5152

5253
// Start up the Node server
5354
const server = app();
54-
server.listen(port, () => {
55+
server.listen(port, (error) => {
56+
if (error) {
57+
throw error;
58+
}
59+
5560
console.log(`Node Express server listening on http://localhost:${port}`);
5661
});
5762
}

packages/schematics/angular/ssr/index.ts

+3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import { posix } from 'node:path';
2424
import { Schema as ServerOptions } from '../server/schema';
2525
import {
2626
DependencyType,
27+
ExistingBehavior,
2728
InstallBehavior,
2829
addDependency,
2930
readWorkspace,
@@ -299,10 +300,12 @@ function addDependencies({ skipInstall }: SSROptions, isUsingApplicationBuilder:
299300
addDependency('express', latestVersions['express'], {
300301
type: DependencyType.Default,
301302
install,
303+
existing: ExistingBehavior.Replace,
302304
}),
303305
addDependency('@types/express', latestVersions['@types/express'], {
304306
type: DependencyType.Dev,
305307
install,
308+
existing: ExistingBehavior.Replace,
306309
}),
307310
];
308311

packages/schematics/angular/utility/latest-versions/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
"comment": "This file is needed so that dependencies are synced by Renovate.",
44
"private": true,
55
"dependencies": {
6-
"@types/express": "^4.17.17",
6+
"@types/express": "^5.0.1",
77
"@types/jasmine": "~5.1.0",
88
"@types/node": "^20.17.19",
99
"browser-sync": "^3.0.0",
10-
"express": "^4.18.2",
10+
"express": "^5.1.0",
1111
"jasmine-core": "~5.6.0",
1212
"jasmine-spec-reporter": "~7.0.0",
1313
"karma-chrome-launcher": "~3.2.0",

0 commit comments

Comments
 (0)