diff --git a/packages/angular/build/src/builders/library/pipeline/build-action.ts b/packages/angular/build/src/builders/library/pipeline/build-action.ts index 30c18fac39c6..9eaf7056808a 100644 --- a/packages/angular/build/src/builders/library/pipeline/build-action.ts +++ b/packages/angular/build/src/builders/library/pipeline/build-action.ts @@ -71,6 +71,7 @@ export async function buildAction(actionContext: BuildActionContext): Promise path.posix.join(options.outputPath, file.path)); - const filesToDelete = buildState.recordEmittedOutputs(collectedAssets, manifestFiles); - if (filesToDelete.size) { await deleteFilesFromDisk( Array.from(filesToDelete, (file) => path.posix.join(options.outputPath, file)), ); } + + await emitFilesToDisk(filesToEmit, (file) => path.posix.join(options.outputPath, file.path)); } catch (error) { assertIsError(error); result.addError(error.message); @@ -184,7 +184,7 @@ function verifyAllowedDependencies( options: NormalizedLibraryOptions, result: ExecutionResult, ): boolean { - const { packageJson, allowedNonPeerDependencies } = options; + const { packageJson, packageJsonPath, allowedNonPeerDependencies } = options; const dependencies = { ...(packageJson.dependencies ?? {}), ...(packageJson.optionalDependencies ?? {}), @@ -195,7 +195,7 @@ function verifyAllowedDependencies( if (!allowedNonPeerDependencies.some((regex) => regex.test(dep))) { result.addError( `Dependency '${dep}' must be explicitly allowed using the 'allowedNonPeerDependencies' option, ` + - `or moved to 'peerDependencies' in 'package.json'.`, + `or moved to 'peerDependencies' in '${packageJsonPath}'.`, ); isValid = false; } diff --git a/packages/angular/build/src/builders/library/tests/behavior/build_spec.ts b/packages/angular/build/src/builders/library/tests/behavior/build_spec.ts index e6c3ac81e210..a4d0cb865eb2 100644 --- a/packages/angular/build/src/builders/library/tests/behavior/build_spec.ts +++ b/packages/angular/build/src/builders/library/tests/behavior/build_spec.ts @@ -92,7 +92,7 @@ describeLibraryBuilder(executeLibraryBuilder, LIBRARY_BUILDER_INFO, (harness) => const { result, logs } = await harness.executeOnce(); expect(result?.success).toBeTrue(); - expect(logs.some((l) => l.level === 'warn')).toBeFalse(); + expect(logs).not.toContain(jasmine.objectContaining({ level: 'warn' })); }); it('should preserve JSDoc comments in .d.ts and annotation comments in .mjs bundles', async () => { @@ -210,10 +210,13 @@ describeLibraryBuilder(executeLibraryBuilder, LIBRARY_BUILDER_INFO, (harness) => ); }); - it('should log failure on build error', async () => { + it('should log failure on build error without secondary bundler warnings', async () => { await harness.writeFile( 'projects/lib/src/public-api.ts', - `export const title: number = 'invalid type';`, + ` + export const title: number = 'invalid type'; + export function runDynamic(code: string) { return eval(code); } + `, ); harness.useTarget('build', { @@ -236,6 +239,7 @@ describeLibraryBuilder(executeLibraryBuilder, LIBRARY_BUILDER_INFO, (harness) => ), }), ); + expect(logs).not.toContain(jasmine.objectContaining({ level: 'warn' })); expect(logs).not.toContain( jasmine.objectContaining({ message: jasmine.stringMatching(/Output location:/), diff --git a/packages/angular/build/src/builders/library/tests/options/allowed-non-peer-dependencies_spec.ts b/packages/angular/build/src/builders/library/tests/options/allowed-non-peer-dependencies_spec.ts index c75699d068a3..d72923c85ba0 100644 --- a/packages/angular/build/src/builders/library/tests/options/allowed-non-peer-dependencies_spec.ts +++ b/packages/angular/build/src/builders/library/tests/options/allowed-non-peer-dependencies_spec.ts @@ -29,7 +29,9 @@ describeLibraryBuilder(executeLibraryBuilder, LIBRARY_BUILDER_INFO, (harness) => expect(logs).toContain( jasmine.objectContaining({ level: 'error', - message: jasmine.stringMatching(/lodash-es.*allowedNonPeerDependencies/), + message: jasmine.stringMatching( + /lodash-es.*allowedNonPeerDependencies.*projects\/lib\/package\.json/, + ), }), ); });