Skip to content

Commit f826968

Browse files
authored
refactor: address issue with bazel resolution of peer dependencies
Key changes include:
1 parent 72f2a46 commit f826968

File tree

10 files changed

+55
-92
lines changed

10 files changed

+55
-92
lines changed

.pnpmfile.cjs

Lines changed: 0 additions & 42 deletions
This file was deleted.

MODULE.bazel

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,6 @@ npm.npm_translate_lock(
115115
"webdriver-manager": "node ./bin/webdriver-manager update --standalone false --gecko false --versions.chrome 106.0.5249.21",
116116
},
117117
data = [
118-
"//:.pnpmfile.cjs",
119118
"//:package.json",
120119
"//:pnpm-workspace.yaml",
121120
"//modules/testing/builder:package.json",

goldens/public-api/angular_devkit/build_webpack/index.api.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
import { BuilderContext } from '@angular-devkit/architect';
88
import { BuilderOutput } from '@angular-devkit/architect';
99
import { Observable } from 'rxjs';
10-
import webpack from 'webpack';
11-
import WebpackDevServer from 'webpack-dev-server';
10+
import type webpack from 'webpack';
11+
import type WebpackDevServer from 'webpack-dev-server';
1212

1313
// @public (undocumented)
1414
export type BuildResult = BuilderOutput & {

modules/testing/builder/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ ts_project(
2020
# Needed at runtime by some builder tests relying on SSR being
2121
# resolvable in the test project.
2222
":node_modules/@angular/ssr",
23+
":node_modules/browser-sync",
2324
":node_modules/jsdom",
2425
":node_modules/vitest",
2526
":node_modules/@vitest/coverage-v8",

modules/testing/builder/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"@angular-devkit/architect": "workspace:*",
55
"@angular/ssr": "workspace:*",
66
"@angular-devkit/build-angular": "workspace:*",
7+
"browser-sync": "3.0.4",
78
"@vitest/coverage-v8": "4.0.8",
89
"jsdom": "27.1.0",
910
"rxjs": "7.8.2",

packages/angular_devkit/build_angular/BUILD.bazel

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,6 @@ ts_project(
226226
":build_angular",
227227
":build_angular_test_utils",
228228
":node_modules/tinyglobby",
229-
":node_modules/webpack",
230229
"//:node_modules/@types/node",
231230
"//:node_modules/prettier",
232231
"//:node_modules/typescript",
@@ -392,8 +391,6 @@ LARGE_SPECS = {
392391
":node_modules/@angular/build",
393392
":node_modules/@angular-devkit/architect",
394393
":node_modules/@angular-devkit/core",
395-
":node_modules/@angular-devkit/build-webpack",
396-
"//modules/testing/builder",
397394

398395
# Base dependencies for the application in hello-world-app.
399396
# Some tests also require extra dependencies.

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import type {
2121
MiddlewareHandler,
2222
ProxyOptions,
2323
} from 'browser-sync';
24+
import { createRequire } from 'node:module';
2425
import { join, resolve as pathResolve } from 'node:path';
2526
import * as url from 'node:url';
2627
import {
@@ -64,7 +65,7 @@ export function execute(
6465
): Observable<SSRDevServerBuilderOutput> {
6566
let browserSync: typeof import('browser-sync');
6667
try {
67-
browserSync = require('browser-sync');
68+
browserSync = createRequire(context.workspaceRoot + '/')('browser-sync');
6869
} catch {
6970
return of({
7071
success: false,

packages/angular_devkit/build_webpack/src/builders/webpack-dev-server/index.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import { Builder, BuilderContext, createBuilder } from '@angular-devkit/architec
1010
import assert from 'node:assert';
1111
import { resolve as pathResolve } from 'node:path';
1212
import { Observable, from, isObservable, of, switchMap } from 'rxjs';
13-
import webpack from 'webpack';
14-
import WebpackDevServer from 'webpack-dev-server';
13+
import type webpack from 'webpack';
14+
import type WebpackDevServer from 'webpack-dev-server';
1515
import { getEmittedFiles, getWebpackConfig } from '../../utils';
1616
import { BuildResult, WebpackFactory, WebpackLoggingCallback } from '../webpack';
1717
import { Schema as WebpackDevServerBuilderSchema } from './schema';
@@ -44,7 +44,7 @@ export function runWebpackDevServer(
4444
return of(result);
4545
}
4646
} else {
47-
return of(webpack(c));
47+
return from(import('webpack').then((mod) => mod.default(c)));
4848
}
4949
};
5050

@@ -54,9 +54,9 @@ export function runWebpackDevServer(
5454
) => {
5555
if (options.webpackDevServerFactory) {
5656
return new options.webpackDevServerFactory(config, webpack);
57+
} else {
58+
return from(import('webpack-dev-server').then((mod) => new mod.default(config, webpack)));
5759
}
58-
59-
return new WebpackDevServer(config, webpack);
6060
};
6161

6262
const {
@@ -70,16 +70,21 @@ export function runWebpackDevServer(
7070
} = options;
7171

7272
return createWebpack({ ...config, watch: false }).pipe(
73+
switchMap(async (webpackCompiler) => {
74+
return [
75+
webpackCompiler,
76+
options.webpackDevServerFactory ?? (await import('webpack-dev-server')).default,
77+
] as unknown as [webpack.Compiler | null, WebpackDevServerFactory];
78+
}),
7379
switchMap(
74-
(webpackCompiler) =>
80+
([webpackCompiler, webpackDevServerFactory]) =>
7581
new Observable<DevServerBuildOutput>((obs) => {
7682
assert(webpackCompiler, 'Webpack compiler factory did not return a compiler instance.');
7783

7884
const devServerConfig = options.devServerConfig || config.devServer || {};
7985
devServerConfig.host ??= 'localhost';
8086

8187
let result: Partial<DevServerBuildOutput>;
82-
8388
const statsOptions = typeof config.stats === 'boolean' ? undefined : config.stats;
8489

8590
webpackCompiler.hooks.done.tap('build-webpack', (stats) => {
@@ -94,7 +99,7 @@ export function runWebpackDevServer(
9499
} as unknown as DevServerBuildOutput);
95100
});
96101

97-
const devServer = createWebpackDevServer(webpackCompiler, devServerConfig);
102+
const devServer = new webpackDevServerFactory(devServerConfig, webpackCompiler);
98103
devServer.startCallback((err) => {
99104
if (err) {
100105
obs.error(err);

packages/angular_devkit/build_webpack/src/builders/webpack/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { Builder, BuilderContext, BuilderOutput, createBuilder } from '@angular-
1010
import assert from 'node:assert';
1111
import { resolve as pathResolve } from 'node:path';
1212
import { Observable, from, isObservable, of, switchMap } from 'rxjs';
13-
import webpack from 'webpack';
13+
import type webpack from 'webpack';
1414
import { EmittedFiles, getEmittedFiles, getWebpackConfig } from '../../utils';
1515
import { Schema as RealWebpackBuilderSchema } from './schema';
1616

@@ -57,7 +57,7 @@ export function runWebpack(
5757
return of(result);
5858
}
5959
} else {
60-
return of(webpack(c));
60+
return from(import('webpack').then((mod) => mod.default(c)));
6161
}
6262
};
6363

0 commit comments

Comments
 (0)