Skip to content

Commit 83c6edd

Browse files
committed
fixup! fix(@angular/build): resolve dev-server sslKey and sslCert relative to the workspace root
1 parent 08e9727 commit 83c6edd

2 files changed

Lines changed: 27 additions & 2 deletions

File tree

‎packages/angular/build/src/builders/dev-server/options.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,8 @@ export async function normalizeOptions(
147147
proxyConfig,
148148
servePath,
149149
ssl,
150-
sslCert: sslCert && path.join(workspaceRoot, sslCert),
151-
sslKey: sslKey && path.join(workspaceRoot, sslKey),
150+
sslCert: sslCert && path.resolve(workspaceRoot, sslCert),
151+
sslKey: sslKey && path.resolve(workspaceRoot, sslKey),
152152
// Prebundling defaults to true but requires caching to function
153153
prebundle: cacheOptions.enabled && !optimization.scripts && prebundle,
154154
inspect,

‎packages/angular/build/src/builders/dev-server/tests/options/ssl_spec.ts‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
* found in the LICENSE file at https://angular.dev/license
77
*/
88

9+
import assert from 'node:assert';
10+
import { mkdtemp, writeFile } from 'node:fs/promises';
11+
import { join } from 'node:path';
912
import { executeDevServer } from '../../index';
1013
import { describeServeBuilder } from '../jasmine-helpers';
1114
import { BASE_OPTIONS, DEV_SERVER_BUILDER_INFO } from '../setup';
@@ -55,5 +58,27 @@ describeServeBuilder(executeDevServer, DEV_SERVER_BUILDER_INFO, (harness, setupT
5558
expect(result?.success).toBeTrue();
5659
expect(result?.baseUrl).toMatch(/^https:\/\/[^/]+:\d+\//);
5760
});
61+
62+
it('supports absolute "sslKey" and "sslCert" paths outside the workspace', async () => {
63+
const baseTmpDir = process.env['TEST_TMPDIR'];
64+
assert(baseTmpDir, 'TEST_TMPDIR is not set');
65+
const certsDir = await mkdtemp(join(baseTmpDir, 'angular-cli-ssl-'));
66+
const sslKey = join(certsDir, 'server.key');
67+
const sslCert = join(certsDir, 'server.crt');
68+
await writeFile(sslKey, SSL_KEY);
69+
await writeFile(sslCert, SSL_CERT);
70+
71+
harness.useTarget('serve', {
72+
...BASE_OPTIONS,
73+
ssl: true,
74+
sslKey,
75+
sslCert,
76+
});
77+
78+
const { result } = await harness.executeOnce();
79+
80+
expect(result?.success).toBeTrue();
81+
expect(result?.baseUrl).toMatch(/^https:\/\/[^/]+:\d+\//);
82+
});
5883
});
5984
});

0 commit comments

Comments
 (0)