[rush] Upgrade pnpm-sync-lib
to v0.3.3 for pnpm v10 compatibility
#5254
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
tiktok/pnpm-sync#40
tiktok/pnpm-sync#43
Summary
Upgrade
pnpm-sync-lib
to v0.3.3 for pnpm v10 compatibilityDetails
1. Upgrade pnpm-sync-lib to Version 0.3.3
Updated
package.json
to upgrade pnpm-sync-lib from the previous version to 0.3.3, ensuring full compatibility with pnpm v10. This change builds upon the foundation established in tiktok/pnpm-sync#40 (pnpm v9 support) and tiktok/pnpm-sync#43 (pnpm v10 support).2. Adopt Official pnpm
readWantedLockfile
MethodsIntegrated official pnpm methods in
BaseInstallManager.ts
to support both v6 and v9 lockfile formats:This implementation provides backward compatibility while supporting the latest pnpm lockfile formats, with automatic detection based on lockfile version.
3. Enhanced Multi-Version pnpm Support
During the upgrade to pnpm v10, packages like
@pnpm/lockfile-file
and@pnpm/lockfile.fs
have peer dependency requirements for@pnpm/logger
, but these dependencies were not being properly satisfied, causing warnings or errors during installation.Solution Implementation
The solution leverages the
pnpm-kit
architecture - a set of version-specific wrapper packages that encapsulate pnpm functionality for different pnpm versions. As part of this upgrade, three new rush-pnpm-kit packages were added (@rushstack/rush-pnpm-kit-v8
,@rushstack/rush-pnpm-kit-v9
, and@rushstack/rush-pnpm-kit-v10
) to provide comprehensive support across pnpm versions. This modular approach allows Rush to support multiple pnpm versions simultaneously while ensuring proper dependency resolution.1. Adding @pnpm/logger as Direct Dependencies
@pnpm/logger
has been added as a direct dependency in eachpnpm-kit
package:libraries/rush-pnpm-kit-v8/package.json
libraries/rush-pnpm-kit-v9/package.json
libraries/rush-pnpm-kit-v10/package.json
2. Modular Encapsulation and Export
Each package exports similar modules with version-appropriate implementations:
3. Usage in Other Packages
In
libraries/rush-lib/src/logic/base/BaseInstallManager.ts
, different kit versions are imported to handle different lockfile formats:How it was tested
Impacted documentation