microsoft / rushstack

Monorepo for tools developed by the Rush Stack community
https://rushstack.io/
Other
5.95k stars 601 forks source link

[rush] Feature Request: Support PNPM 9 #4841

Open kenrick95 opened 4 months ago

kenrick95 commented 4 months ago

Summary

Rush should support PNPM 9, which has a breaking change on the lockfile format.

Based on the conversation in Zulipchat:

@jeremymeng Last time I checked PNPM v9 on our repo (azure/azure-sdk-for-js) there are changes that broke PnpmShrinkwrapFile. It seems that some properties got moved around in he parsed yaml data.

When directly bumped in my company's repo, I observed that rush update successfully upgraded the lockfile in the temp folder (common/temp/pnpm-lock.yaml), but it wasn't synced back to common/config/rush/pnpm-lock.yaml. Not really sure why..

I tried bumping the PNPM version in in the Rushstack repo and tried to build, but seems like pnpm-sync also needs to be modified to support PNPM 9.

Repro steps

Expected result:

Actual result:

Details

Standard questions

Please answer these questions to help us investigate your issue more quickly:

Question Answer
@microsoft/rush globally installed version? 5.129.7
rushVersion from rush.json? 5.117.8
useWorkspaces from rush.json? Yes
Operating system? Mac
Would you consider contributing a PR? Yes
Node.js version (node -v)? 18.20.3
iclanton commented 4 months ago

@g-chao - Would you take a look at this?

dbartholomae commented 2 months ago

Is this something where external PRs would be accepted?

VasekProchazka commented 1 month ago

Hello, what is the current status ?

matthieu-foucault commented 2 weeks ago

I just tried on our monorepo and everything seems to be working fine with pnpm v9.12.3, rush v5.140.1. Should I expect some issues with pnpm v9?

iclanton commented 2 weeks ago

@dbartholomae - we're happy to accept external PRs.

dbartholomae commented 1 week ago

I just tried updating pnpm to version 9, and it worked without additional changes (except for pnpm internal things, like the fact that pre and post hooks now are enabled by default). So there doesn't seem to be need for a PR anymore, and maybe this issue can be closed - unless anyone else still runs into trouble?

prabirshrestha commented 1 week ago

@dbartholomae curious if you have tried pnpm catalog feature that was introduced in v9 and if it works. https://pnpm.io/catalogs

dbartholomae commented 1 week ago

We don't use them, so I can't really tell

fzxen commented 6 days ago

@dbartholomae After upgrading to v9 and executing the rush install/update command, you will find that the content of the .rush/temp/shrinkwrap-deps.json file is incorrect. As you can see, rush is currently unable to correctly parse lockfile v9. Thus, Rush cache system doesn't work fine with pnpmv9 because rush will generate a cacheId based on the hash of shrinkwrap-deps.json. I have submitted a PR to fix this issue. https://github.com/microsoft/rushstack/pull/5009.