Skip to content

Commit

Permalink
fix: auto-install-peers in a workspace
Browse files Browse the repository at this point in the history
close #4820
  • Loading branch information
zkochan committed Sep 17, 2022
1 parent ebf6ee0 commit a9c8b43
Show file tree
Hide file tree
Showing 6 changed files with 217 additions and 31 deletions.
58 changes: 58 additions & 0 deletions packages/core/test/install/autoInstallPeers.ts
Expand Up @@ -266,3 +266,61 @@ test('automatically install peer dependency when it is a dev dependency in anoth
'is-positive': '1.0.0',
})
})

// Covers https://github.com/pnpm/pnpm/issues/4820
test('auto install peer deps in a workspace', async () => {
prepareEmpty()
await mutateModules([
{
buildIndex: 0,
manifest: {
name: 'root-project',
devDependencies: {
'@pnpm.e2e/abc-parent-with-ab': '1.0.0',
},
},
mutation: 'install',
rootDir: process.cwd(),
},
{
buildIndex: 0,
manifest: {
name: 'project',
peerDependencies: {
'@pnpm.e2e/abc-parent-with-ab': '1.0.0',
},
},
mutation: 'install',
rootDir: path.resolve('project'),
},
], await testDefaults({ autoInstallPeers: true }))
})

test('auto install peer deps in a workspace', async () => {
prepareEmpty()
await mutateModules([
{
buildIndex: 0,
manifest: {
name: 'root-project',
devDependencies: {
'@pnpm.e2e/abc-parent-with-ab': '1.0.0',
'@pnpm.e2e/peer-c': '1.0.0',
},
},
mutation: 'install',
rootDir: process.cwd(),
},
{
buildIndex: 0,
manifest: {
name: 'project',
peerDependencies: {
'@pnpm.e2e/abc-parent-with-ab': '1.0.0',
},
},
mutation: 'install',
rootDir: path.resolve('project'),
},
], await testDefaults({ autoInstallPeers: true }))
})
1 change: 1 addition & 0 deletions packages/resolve-dependencies/package.json
Expand Up @@ -50,6 +50,7 @@
"get-npm-tarball-url": "^2.0.3",
"is-inner-link": "^4.0.0",
"is-subdir": "^1.2.0",
"p-defer": "^3.0.0",
"path-exists": "^4.0.0",
"promise-share": "^1.0.0",
"ramda": "npm:@pnpm/ramda@0.28.1",
Expand Down
5 changes: 5 additions & 0 deletions packages/resolve-dependencies/src/nodeIdUtils.ts
@@ -1,3 +1,8 @@
export function nodeIdContains (nodeId: string, pkgId: string) {
const pkgIds = splitNodeId(nodeId)
return pkgIds.includes(pkgId)
}

export function nodeIdContainsSequence (nodeId: string, pkgId1: string, pkgId2: string) {
const pkgIds = splitNodeId(nodeId)
pkgIds.pop()
Expand Down

0 comments on commit a9c8b43

Please sign in to comment.