Files
pnpm/engine/pm/commands/tsconfig.json
Zoltan Kochan c1d29d2258 fix(self-update): do not downgrade when latest dist-tag is older (#11435)
* fix(self-update): do not downgrade when latest dist-tag is older

`pnpm self-update` defaults to the `latest` dist-tag, but `latest` on the
registry can lag the installed version when a new major has shipped
without being tagged. Refuse to downgrade in that case. Users can still
run `pnpm self-update latest` (explicit) to force the downgrade.

Closes #11418

* fix(self-update): use lockfile-pinned version for project-pin downgrade check

When a project pins pnpm via a range (e.g. `devEngines.packageManager.version: ">=8.0.0"`)
and the env lockfile pins an exact version above the range's lower bound,
the previous guard compared the resolved `latest` against `semver.minVersion(spec)`
and missed the downgrade. Read `packageManagerDependencies.pnpm.version` from
`pnpm-lock.yaml` and use the max of (lockfile-pinned, spec.minVersion) as the
current version. Also fix the explicit-`latest` test which mocked `latest`
as newer than the current version, defeating its own assertion.

* chore(engine.pm.commands): add lockfile/fs project reference to tsconfig
2026-05-03 01:14:54 +02:00

87 lines
1.5 KiB
JSON

{
"extends": "@pnpm/tsconfig",
"compilerOptions": {
"outDir": "lib",
"rootDir": "src",
"target": "es2020"
},
"include": [
"src/**/*.ts",
"../../../__typings__/**/*.d.ts"
],
"references": [
{
"path": "../../../__utils__/prepare"
},
{
"path": "../../../bins/linker"
},
{
"path": "../../../building/policy"
},
{
"path": "../../../cli/meta"
},
{
"path": "../../../cli/utils"
},
{
"path": "../../../config/reader"
},
{
"path": "../../../core/constants"
},
{
"path": "../../../core/error"
},
{
"path": "../../../core/logger"
},
{
"path": "../../../core/types"
},
{
"path": "../../../deps/graph-hasher"
},
{
"path": "../../../global/commands"
},
{
"path": "../../../global/packages"
},
{
"path": "../../../installing/client"
},
{
"path": "../../../installing/deps-restorer"
},
{
"path": "../../../installing/env-installer"
},
{
"path": "../../../lockfile/fs"
},
{
"path": "../../../lockfile/types"
},
{
"path": "../../../resolving/npm-resolver"
},
{
"path": "../../../shell/path"
},
{
"path": "../../../store/connection-manager"
},
{
"path": "../../../store/controller"
},
{
"path": "../../../testing/mock-agent"
},
{
"path": "../../../workspace/project-manifest-reader"
}
]
}