diff --git a/.changeset/eight-swans-notice.md b/.changeset/eight-swans-notice.md new file mode 100644 index 0000000000..3d9419680a --- /dev/null +++ b/.changeset/eight-swans-notice.md @@ -0,0 +1,5 @@ +--- +"@pnpm/render-peer-issues": patch +--- + +When printing peer dependency issues, print the "\*" range in double quotes. This will make it easier to copy the package resolutions and put them to the end of a `pnpm add` command for execution. diff --git a/packages/render-peer-issues/src/index.ts b/packages/render-peer-issues/src/index.ts index 6c4be0f438..e701ad8dd5 100644 --- a/packages/render-peer-issues/src/index.ts +++ b/packages/render-peer-issues/src/index.ts @@ -54,7 +54,7 @@ export default function ( } function formatNameAndRange (name: string, range: string) { - if (range.includes(' ')) { + if (range.includes(' ') || range === '*') { return `${name}@"${range}"` } return `${name}@${range}` diff --git a/packages/render-peer-issues/test/__snapshots__/index.ts.snap b/packages/render-peer-issues/test/__snapshots__/index.ts.snap index 1aab3593e3..1e125afafa 100644 --- a/packages/render-peer-issues/test/__snapshots__/index.ts.snap +++ b/packages/render-peer-issues/test/__snapshots__/index.ts.snap @@ -22,6 +22,15 @@ Peer dependencies that should be installed: ddd@^1.0.0 " `; +exports[`renderPeerIssues() format correctly the version ranges with spaces and "*" 1`] = ` +". +└─┬ z + ├── ✕ missing peer a@\\"*\\" + └── ✕ missing peer b@\\"1 || 2\\" +Peer dependencies that should be installed: + a@\\"*\\" b@\\"1 || 2\\" " +`; + exports[`renderPeerIssues() optional peer dependencies are printed only if they are in conflict with non-optional peers 1`] = ` ". └─┬ xxx diff --git a/packages/render-peer-issues/test/index.ts b/packages/render-peer-issues/test/index.ts index 65e4f3a07b..8f39da5937 100644 --- a/packages/render-peer-issues/test/index.ts +++ b/packages/render-peer-issues/test/index.ts @@ -160,3 +160,39 @@ test('renderPeerIssues() optional peer dependencies are printed only if they are }, }, { width: 500 }))).toMatchSnapshot() }) + +test('renderPeerIssues() format correctly the version ranges with spaces and "*"', () => { + expect(stripAnsi(renderPeerIssues({ + '.': { + conflicts: [], + intersections: { a: '*', b: '1 || 2' }, + bad: {}, + missing: { + a: [ + { + parents: [ + { + name: 'z', + version: '1.0.0', + }, + ], + optional: false, + wantedRange: '*', + }, + ], + b: [ + { + parents: [ + { + name: 'z', + version: '1.0.0', + }, + ], + optional: false, + wantedRange: '1 || 2', + }, + ], + }, + }, + }, { width: 500 }))).toMatchSnapshot() +})