Files
pnpm/pkg-manifest/utils/src/index.ts
Minha Kang f74114a039 fix: upgrade peer dependencies with pnpm upgrade --latest (#9928)
The `--latest` flag triggers the `installSome` code path, which built
`currentBareSpecifiers` via `getAllDependenciesFromManifest()` — a
function that excluded peer dependencies. The non-`--latest` path uses
`getWantedDependencies()`, which honors `autoInstallPeers` and includes
them. Pass `autoInstallPeers` through `getAllDependenciesFromManifest`
so both paths agree.

Closes #9900

Co-authored-by: Zoltan Kochan <z@kochan.io>
2026-04-24 03:27:53 +00:00

38 lines
1.2 KiB
TypeScript

import type {
Dependencies,
IncludedDependencies,
ProjectManifest,
} from '@pnpm/types'
import { getAllUniqueSpecs } from './getAllUniqueSpecs.js'
import { getSpecFromPackageManifest } from './getSpecFromPackageManifest.js'
export * from './convertEnginesRuntimeToDependencies.js'
export * from './getDependencyTypeFromManifest.js'
export * from './updateProjectManifestObject.js'
export { getAllUniqueSpecs, getSpecFromPackageManifest }
export function filterDependenciesByType (
manifest: ProjectManifest,
include: IncludedDependencies
): Dependencies {
return {
...(include.devDependencies ? manifest.devDependencies : {}),
...(include.dependencies ? manifest.dependencies : {}),
...(include.optionalDependencies ? manifest.optionalDependencies : {}),
}
}
export function getAllDependenciesFromManifest (
manifest: Pick<ProjectManifest, 'devDependencies' | 'dependencies' | 'optionalDependencies' | 'peerDependencies'>,
opts?: { autoInstallPeers?: boolean }
): Dependencies {
return {
...manifest.devDependencies,
...manifest.dependencies,
...manifest.optionalDependencies,
...(opts?.autoInstallPeers ? manifest.peerDependencies : {}),
}
}