Skip to content

Commit 2a32030

Browse files
committed
refactor: replace dirname(fileURLToPath(import.meta.url)) with import.meta.dirname
This change is possible because we no longer support Node.js versions earlier than 20.11.0
1 parent 4153bd8 commit 2a32030

File tree

15 files changed

+23
-38
lines changed

15 files changed

+23
-38
lines changed

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

+2-4
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@ import {
55
writeResponseToNodeResponse,
66
} from '@angular/ssr/node';
77
import express from 'express';
8-
import { dirname, resolve } from 'node:path';
9-
import { fileURLToPath } from 'node:url';
8+
import { join } from 'node:path';
109

11-
const serverDistFolder = dirname(fileURLToPath(import.meta.url));
12-
const browserDistFolder = resolve(serverDistFolder, '../<%= browserDistDirectory %>');
10+
const browserDistFolder = join(import.meta.dirname, '../<%= browserDistDirectory %>');
1311

1412
const app = express();
1513
const angularApp = new AngularNodeAppEngine();

packages/schematics/angular/ssr/index_spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ describe('SSR Schematic', () => {
130130
expect(scripts['serve:ssr:test-app']).toBe(`node dist/test-app/node-server/server.mjs`);
131131

132132
const serverFileContent = tree.readContent('/projects/test-app/src/server.ts');
133-
expect(serverFileContent).toContain(`resolve(serverDistFolder, '../public')`);
133+
expect(serverFileContent).toContain(`join(import.meta.dirname, '../public')`);
134134
});
135135

136136
it(`removes "outputPath.browser" when it's an empty string`, async () => {

scripts/build-packages-dist.mts

+1-2
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,13 @@ import { BuiltPackage } from '@angular/ng-dev';
1616
import { execSync } from 'node:child_process';
1717
import { chmodSync, copyFileSync, mkdirSync, rmSync } from 'node:fs';
1818
import { dirname, join } from 'node:path';
19-
import { fileURLToPath } from 'node:url';
2019
import sh from 'shelljs';
2120

2221
/** Name of the Bazel tag that will be used to find release package targets. */
2322
const releaseTargetTag = 'release-package';
2423

2524
/** Path to the project directory. */
26-
const projectDir = join(dirname(fileURLToPath(import.meta.url)), '../');
25+
const projectDir = join(import.meta.dirname, '../');
2726

2827
/** Command that runs Bazel. */
2928
const bazelCmd = process.env.BAZEL || `pnpm -s bazel`;

scripts/build-schema.mts

+2-3
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@
88

99
import { spawn } from 'node:child_process';
1010
import { rm } from 'node:fs/promises';
11-
import { dirname, join, resolve } from 'node:path';
12-
import { fileURLToPath } from 'node:url';
11+
import { join, resolve } from 'node:path';
1312

14-
const __dirname = dirname(fileURLToPath(import.meta.url));
13+
const __dirname = import.meta.dirname;
1514
const baseDir = resolve(`${__dirname}/..`);
1615
const bazelCmd = process.env.BAZEL ?? `pnpm -s bazel`;
1716
const distRoot = join(baseDir, '/dist-schema/');

scripts/build.mts

+2-3
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@
99
import { spawn } from 'node:child_process';
1010
import { COPYFILE_FICLONE } from 'node:constants';
1111
import fs from 'node:fs';
12-
import path, { dirname, join, relative, resolve } from 'node:path';
13-
import { fileURLToPath } from 'node:url';
12+
import { dirname, join, relative, resolve } from 'node:path';
1413

15-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
14+
const __dirname = import.meta.dirname;
1615
const baseDir = resolve(`${__dirname}/..`);
1716
const bazelCmd = process.env.BAZEL ?? `pnpm -s bazel`;
1817
const distRoot = join(baseDir, '/dist');

scripts/create.mts

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ import assert from 'node:assert';
1010
import * as child_process from 'node:child_process';
1111
import { copyFile, readFile, rm, writeFile } from 'node:fs/promises';
1212
import * as path from 'node:path';
13-
import { fileURLToPath, pathToFileURL } from 'node:url';
13+
import { pathToFileURL } from 'node:url';
1414
import build from './build.mjs';
1515
import { packages } from './packages.mjs';
1616

1717
export interface CreateOptions extends Record<string, unknown> {
1818
_: string[];
1919
}
2020

21-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
21+
const __dirname = import.meta.dirname;
2222

2323
async function _exec(command: string, args: string[], opts: { cwd?: string }) {
2424
const { status, error, stderr, stdout } = child_process.spawnSync(command, args, { ...opts });

scripts/devkit-admin.mts

+2-3
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
*/
99

1010
import colors from 'ansi-colors';
11-
import path, { dirname } from 'node:path';
12-
import { fileURLToPath } from 'node:url';
11+
import path from 'node:path';
1312
import yargsParser from 'yargs-parser';
1413

1514
const args = yargsParser(process.argv.slice(2), {
@@ -21,7 +20,7 @@ const args = yargsParser(process.argv.slice(2), {
2120
const scriptName = args._.shift();
2221

2322
const cwd = process.cwd();
24-
const scriptDir = dirname(fileURLToPath(import.meta.url));
23+
const scriptDir = import.meta.dirname;
2524
process.chdir(path.join(scriptDir, '..'));
2625

2726
const originalConsole = { ...console };

scripts/json-help.mts

+1-2
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@ import { spawnSync } from 'node:child_process';
1010
import { promises as fs } from 'node:fs';
1111
import * as os from 'node:os';
1212
import * as path from 'node:path';
13-
import { fileURLToPath } from 'node:url';
1413
import create from './create.mjs';
1514

16-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
15+
const __dirname = import.meta.dirname;
1716

1817
export async function createTemporaryProject(): Promise<string> {
1918
console.info('Creating temporary project...');

scripts/snapshots.mts

+1-2
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@ import { execSync, spawnSync } from 'node:child_process';
1010
import * as fs from 'node:fs';
1111
import * as os from 'node:os';
1212
import * as path from 'node:path';
13-
import { fileURLToPath } from 'node:url';
1413
import build from './build.mjs';
1514
import jsonHelp, { createTemporaryProject } from './json-help.mjs';
1615
import { PackageInfo, packages } from './packages.mjs';
1716

18-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
17+
const __dirname = import.meta.dirname;
1918

2019
// Added to the README.md of the snapshot. This is markdown.
2120
const readmeHeaderFn = (name: string, snapshotRepo: string) => `

scripts/templates.mts

+1-2
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@
99
import lodash from 'lodash';
1010
import * as fs from 'node:fs';
1111
import * as path from 'node:path';
12-
import { fileURLToPath } from 'node:url';
1312
import { releasePackages } from './packages.mjs';
1413

15-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
14+
const __dirname = import.meta.dirname;
1615

1716
async function _runTemplate(inputPath: string, outputPath: string) {
1817
inputPath = path.resolve(__dirname, inputPath);

scripts/validate-user-analytics.mts

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,13 @@ import lodash from 'lodash';
1111
import assert from 'node:assert';
1212
import * as fs from 'node:fs';
1313
import * as path from 'node:path';
14-
import { fileURLToPath } from 'node:url';
1514
import {
1615
EventCustomDimension,
1716
EventCustomMetric,
1817
UserCustomDimension,
1918
} from '../packages/angular/cli/src/analytics/analytics-parameters.mjs';
2019

21-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
20+
const __dirname = import.meta.dirname;
2221
const userAnalyticsTable = lodash.template(
2322
fs.readFileSync(path.join(__dirname, './templates/user-analytics-table.ejs'), 'utf-8'),
2423
);

tests/legacy-cli/e2e/assets/ssr-project-webpack/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
"@types/express": "^4.17.17",
3636
"@types/jasmine": "~4.3.0",
3737
"@types/mime": "^3.0.0",
38-
"@types/node": "^18.18.0",
38+
"@types/node": "^20.17.19",
3939
"jasmine-core": "~4.6.0",
4040
"karma": "~6.4.0",
4141
"karma-chrome-launcher": "~3.2.0",

tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,11 @@ export default async function () {
7777
'src/server.ts': `
7878
import { AngularNodeAppEngine, writeResponseToNodeResponse, isMainModule, createNodeRequestHandler } from '@angular/ssr/node';
7979
import express from 'express';
80-
import { fileURLToPath } from 'node:url';
81-
import { dirname, resolve } from 'node:path';
80+
import { join } from 'node:path';
8281
8382
export function app(): express.Express {
8483
const server = express();
85-
const serverDistFolder = dirname(fileURLToPath(import.meta.url));
86-
const browserDistFolder = resolve(serverDistFolder, '../browser');
84+
const browserDistFolder = join(import.meta.dirname, '../browser');
8785
const angularNodeAppEngine = new AngularNodeAppEngine();
8886
8987
server.get('/api', (req, res) => res.json({ dataFromAPI: true }));

tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,11 @@ export default async function () {
3939
'src/server.ts': `
4040
import { AngularNodeAppEngine, writeResponseToNodeResponse, isMainModule, createNodeRequestHandler } from '@angular/ssr/node';
4141
import express from 'express';
42-
import { fileURLToPath } from 'node:url';
43-
import { dirname, resolve } from 'node:path';
42+
import { join } from 'node:path';
4443
4544
export function app(): express.Express {
4645
const server = express();
47-
const serverDistFolder = dirname(fileURLToPath(import.meta.url));
48-
const browserDistFolder = resolve(serverDistFolder, '../browser');
46+
const browserDistFolder = join(import.meta.dirname, '../browser');
4947
const angularNodeAppEngine = new AngularNodeAppEngine();
5048
5149
server.use('/api/**', (req, res) => res.json({ hello: 'foo' }));

tests/legacy-cli/e2e/utils/project.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -212,14 +212,13 @@ export function updateServerFileForWebpack(filepath: string): Promise<void> {
212212
import { APP_BASE_HREF } from '@angular/common';
213213
import { CommonEngine } from '@angular/ssr/node';
214214
import express from 'express';
215-
import { fileURLToPath } from 'node:url';
216-
import { dirname, join, resolve } from 'node:path';
215+
import { join, resolve } from 'node:path';
217216
import bootstrap from './main.server';
218217
219218
// The Express app is exported so that it can be used by serverless Functions.
220219
export function app(): express.Express {
221220
const server = express();
222-
const serverDistFolder = dirname(fileURLToPath(import.meta.url));
221+
const serverDistFolder = import.meta.dirname;
223222
const browserDistFolder = resolve(serverDistFolder, '../browser');
224223
const indexHtml = join(serverDistFolder, 'index.server.html');
225224

0 commit comments

Comments
 (0)