diff --git a/apps/rush/package.json b/apps/rush/package.json index 38b775062e..1610b7e328 100644 --- a/apps/rush/package.json +++ b/apps/rush/package.json @@ -38,6 +38,7 @@ "dependencies": { "@microsoft/rush-lib": "workspace:*", "@rushstack/node-core-library": "workspace:*", + "@rushstack/rush-reporter": "workspace:*", "@rushstack/terminal": "workspace:*", "semver": "~7.7.4" }, diff --git a/common/changes/@microsoft/rush/copilot-reporter-r1a-package-wiring_2026-08-28-02-20.json b/common/changes/@microsoft/rush/copilot-reporter-r1a-package-wiring_2026-08-28-02-20.json new file mode 100644 index 0000000000..231a2e4eaf --- /dev/null +++ b/common/changes/@microsoft/rush/copilot-reporter-r1a-package-wiring_2026-08-28-02-20.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@microsoft/rush", + "comment": "Add the rush-reporter package dependency to the Rush frontend and engine without changing default output.", + "type": "patch" + } + ], + "packageName": "@microsoft/rush", + "email": "TheLarkInn@users.noreply.github.com" +} diff --git a/common/config/rush/browser-approved-packages.json b/common/config/rush/browser-approved-packages.json index b8fdee53a1..df558dcb2d 100644 --- a/common/config/rush/browser-approved-packages.json +++ b/common/config/rush/browser-approved-packages.json @@ -54,6 +54,10 @@ "name": "@rushstack/rush-daemon-transport", "allowedCategories": [ "libraries", "tests" ] }, + { + "name": "@rushstack/rush-reporter", + "allowedCategories": [ "libraries" ] + }, { "name": "@rushstack/rush-serve-dashboard", "allowedCategories": [ "libraries" ] diff --git a/common/config/subspaces/build-tests-subspace/pnpm-lock.yaml b/common/config/subspaces/build-tests-subspace/pnpm-lock.yaml index 56ad328066..5a14a3f4f8 100644 --- a/common/config/subspaces/build-tests-subspace/pnpm-lock.yaml +++ b/common/config/subspaces/build-tests-subspace/pnpm-lock.yaml @@ -1027,6 +1027,14 @@ packages: resolution: {directory: ../../../libraries/rush-pnpm-kit-v9, type: directory} engines: {node: '>=20.9.0'} + '@rushstack/rush-reporter@file:../../../libraries/reporter': + resolution: {directory: ../../../libraries/reporter, type: directory} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + '@rushstack/rush-sdk@file:../../../libraries/rush-sdk': resolution: {directory: ../../../libraries/rush-sdk, type: directory} engines: {node: '>=20.9.0'} @@ -4357,6 +4365,7 @@ snapshots: '@rushstack/rush-pnpm-kit-v10': file:../../../libraries/rush-pnpm-kit-v10 '@rushstack/rush-pnpm-kit-v8': file:../../../libraries/rush-pnpm-kit-v8 '@rushstack/rush-pnpm-kit-v9': file:../../../libraries/rush-pnpm-kit-v9 + '@rushstack/rush-reporter': file:../../../libraries/reporter(@types/node@20.17.19) '@rushstack/stream-collator': file:../../../libraries/stream-collator(@types/node@20.17.19) '@rushstack/terminal': file:../../../libraries/terminal(@types/node@20.17.19) '@rushstack/ts-command-line': file:../../../libraries/ts-command-line(@types/node@20.17.19) @@ -4968,6 +4977,12 @@ snapshots: '@pnpm/lockfile.fs-pnpm-lock-v9': '@pnpm/lockfile.fs@1001.1.32(@pnpm/logger@1001.0.1)' '@pnpm/logger': 1001.0.1 + '@rushstack/rush-reporter@file:../../../libraries/reporter(@types/node@20.17.19)': + dependencies: + semver: 7.7.4 + optionalDependencies: + '@types/node': 20.17.19 + '@rushstack/rush-sdk@file:../../../libraries/rush-sdk(@types/node@20.17.19)': dependencies: '@pnpm/lockfile.types-900': '@pnpm/lockfile.types@900.0.0' diff --git a/common/config/subspaces/build-tests-subspace/repo-state.json b/common/config/subspaces/build-tests-subspace/repo-state.json index c9b59551dc..4555e68e18 100644 --- a/common/config/subspaces/build-tests-subspace/repo-state.json +++ b/common/config/subspaces/build-tests-subspace/repo-state.json @@ -1,6 +1,6 @@ // DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. { - "pnpmShrinkwrapHash": "6c9692e3e1eac781ccc4d397fb350ea393be2118", + "pnpmShrinkwrapHash": "2f7908424d103b2f677e95bcd5d85a385b75eda2", "preferredVersionsHash": "550b4cee0bef4e97db6c6aad726df5149d20e7d9", - "packageJsonInjectedDependenciesHash": "e31d2a6b0cc6937616e99bfd2aa6f566d11a8681" + "packageJsonInjectedDependenciesHash": "e8fe4109038ad6e9b1e97cbb83e63d9094d37fe4" } diff --git a/common/config/subspaces/default/pnpm-lock.yaml b/common/config/subspaces/default/pnpm-lock.yaml index a8350a95e1..30f755f0c5 100644 --- a/common/config/subspaces/default/pnpm-lock.yaml +++ b/common/config/subspaces/default/pnpm-lock.yaml @@ -383,6 +383,9 @@ importers: '@rushstack/node-core-library': specifier: workspace:* version: link:../../libraries/node-core-library + '@rushstack/rush-reporter': + specifier: workspace:* + version: link:../../libraries/reporter '@rushstack/terminal': specifier: workspace:* version: link:../../libraries/terminal @@ -4205,6 +4208,9 @@ importers: '@rushstack/rush-pnpm-kit-v9': specifier: workspace:* version: link:../rush-pnpm-kit-v9 + '@rushstack/rush-reporter': + specifier: workspace:* + version: link:../reporter '@rushstack/stream-collator': specifier: workspace:* version: link:../stream-collator diff --git a/libraries/reporter/src/test/PackageBoundaries.test.ts b/libraries/reporter/src/test/PackageBoundaries.test.ts new file mode 100644 index 0000000000..0b7493f1a6 --- /dev/null +++ b/libraries/reporter/src/test/PackageBoundaries.test.ts @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import * as fs from 'node:fs'; +import * as path from 'node:path'; + +interface IPackageJson { + dependencies?: Record; + devDependencies?: Record; + optionalDependencies?: Record; + peerDependencies?: Record; +} + +const REPO_ROOT: string = path.resolve(__dirname, '../../../..'); + +function loadPackageJson(relativePath: string): IPackageJson { + return JSON.parse(fs.readFileSync(path.join(REPO_ROOT, relativePath), 'utf8')) as IPackageJson; +} + +describe('package boundaries', () => { + it('keeps the reporter independent from rush-lib', () => { + const reporterPackageJson: IPackageJson = loadPackageJson('libraries/reporter/package.json'); + + for (const dependencySection of [ + reporterPackageJson.dependencies, + reporterPackageJson.devDependencies, + reporterPackageJson.optionalDependencies, + reporterPackageJson.peerDependencies + ]) { + expect(dependencySection?.['@microsoft/rush-lib']).toBeUndefined(); + } + }); + + it('wires the reporter into the Rush engine and frontend', () => { + const rushLibPackageJson: IPackageJson = loadPackageJson('libraries/rush-lib/package.json'); + const rushPackageJson: IPackageJson = loadPackageJson('apps/rush/package.json'); + + expect(rushLibPackageJson.dependencies?.['@rushstack/rush-reporter']).toBe('workspace:*'); + expect(rushPackageJson.dependencies?.['@rushstack/rush-reporter']).toBe('workspace:*'); + }); +}); diff --git a/libraries/rush-lib/package.json b/libraries/rush-lib/package.json index c1e072cd26..1cfa6cb05d 100644 --- a/libraries/rush-lib/package.json +++ b/libraries/rush-lib/package.json @@ -53,6 +53,7 @@ "@rushstack/rush-pnpm-kit-v10": "workspace:*", "@rushstack/rush-pnpm-kit-v8": "workspace:*", "@rushstack/rush-pnpm-kit-v9": "workspace:*", + "@rushstack/rush-reporter": "workspace:*", "@rushstack/stream-collator": "workspace:*", "@rushstack/terminal": "workspace:*", "@rushstack/ts-command-line": "workspace:*",