Switch servicebroker-npm from Yarn to pnpm 11.6#513
Merged
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR migrates the src/servicebroker-npm package from Yarn (Zero-Install / PnP + checked-in SDK artifacts) to a Corepack-managed pnpm toolchain, updating local scripts, CI steps, and contributor guidance so restore/build/test/pack flows work consistently with corepack pnpm.
Changes:
- Switch
packageManagerfromyarn@4.16.0topnpm@11.6.0, add pnpm workspace configuration, and replace Yarn artifacts withpnpm-lock.yaml. - Update restore/build/test/pack scripts and Azure Pipelines steps to use
corepack pnpmand keep tarball naming compatible with the existing publish pipeline. - Update editor/tooling guidance to use
node_modules-based TypeScript/ESLint/Prettier rather than Yarn SDK wrappers.
Reviewed changes
Copilot reviewed 24 out of 27 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| src/servicebroker-npm/pnpm-workspace.yaml | Adds pnpm v11 workspace-level config (allowBuilds, overrides). |
| src/servicebroker-npm/pnpm-lock.yaml | Adds pnpm lockfile (with synckit override recorded). |
| src/servicebroker-npm/package.json | Pins pnpm via packageManager and removes Yarn SDK dependency. |
| src/servicebroker-npm/pack.ps1 | Replaces Yarn commands with pnpm/Corepack and preserves expected .tgz naming. |
| src/servicebroker-npm/init.ps1 | Updates per-package init to run corepack pnpm install. |
| src/servicebroker-npm/.yarnrc.yml | Removes Yarn-specific configuration. |
| src/servicebroker-npm/.yarn/sdks/typescript/package.json | Removes checked-in Yarn SDK artifact. |
| src/servicebroker-npm/.yarn/sdks/typescript/lib/typescript.js | Removes checked-in Yarn SDK artifact. |
| src/servicebroker-npm/.yarn/sdks/typescript/lib/tsserverlibrary.js | Removes checked-in Yarn SDK artifact. |
| src/servicebroker-npm/.yarn/sdks/typescript/lib/tsserver.js | Removes checked-in Yarn SDK artifact. |
| src/servicebroker-npm/.yarn/sdks/typescript/lib/tsc.js | Removes checked-in Yarn SDK artifact. |
| src/servicebroker-npm/.yarn/sdks/prettier/package.json | Removes checked-in Yarn SDK artifact. |
| src/servicebroker-npm/.yarn/sdks/prettier/index.cjs | Removes checked-in Yarn SDK artifact. |
| src/servicebroker-npm/.yarn/sdks/integrations.yml | Removes checked-in Yarn SDK artifact. |
| src/servicebroker-npm/.yarn/sdks/eslint/package.json | Removes checked-in Yarn SDK artifact. |
| src/servicebroker-npm/.yarn/sdks/eslint/lib/unsupported-api.js | Removes checked-in Yarn SDK artifact. |
| src/servicebroker-npm/.yarn/sdks/eslint/lib/api.js | Removes checked-in Yarn SDK artifact. |
| src/servicebroker-npm/.vscode/settings.json | Updates VS Code settings to use node_modules and pnpm-based Jest command. |
| src/servicebroker-npm/.npmrc | Adds project-level npm registry settings for pnpm installs. |
| src/servicebroker-npm/.npmignore | Ensures pnpm/workspace artifacts and .npmrc aren’t included in published tarballs. |
| src/servicebroker-npm/.gitignore | Updates ignore rules to drop Yarn-specific patterns and include pnpm logs. |
| init.ps1 | Updates root init flow to run pnpm install (and remove PnP artifacts). |
| CONTRIBUTING.md | Updates contributor instructions for npm auth, maintenance, and pnpm usage. |
| azure-pipelines/node.yml | Updates CI node test/pack steps to use pnpm. |
| azure-pipelines/install-dependencies.yml | Updates CI setup to authenticate via .npmrc and rely on Corepack. |
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Skip package-manager artifacts while scanning MSBuild inputs so pnpm's node_modules layout does not break SDK discovery. Add a targeted retry around pnpm restore for transient Azure Artifacts tarball timeouts, and clarify that the servicebroker npm wrapper restores through the repo-root init script. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use FullName when reading discovered MSBuild input files so Windows PowerShell does not resolve FileInfo objects relative to the current directory during Azure prerequisite installation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Configure pnpm to place its virtual store under obj so repo-wide MSBuild project scans do not recurse through pnpm's package tree. This avoids changing the shared Install-DotNetSdk.ps1 template script. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Configure pnpm's virtual store in pnpm-workspace.yaml so the actual package tree is placed under obj while node_modules remains a lightweight linker directory. This keeps package artifacts out of src without changing the shared SDK install script. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The default pnpm layout works with the root init prerequisite path after a clean install, so do not move package artifacts to obj as an unproven workaround. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
olegtk
approved these changes
Jun 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This switches the
src/servicebroker-npmpackage off Yarn and onto pnpm so the repo no longer depends on checked-in Yarn release/SDK artifacts and can use a current pnpm toolchain instead.The change updates the local developer flow, CI restore/test/pack steps, and contributor docs together so the package is restored, built, tested, and packed consistently through
corepack pnpm. It replacesyarn.lockwithpnpm-lock.yaml, removes the tracked.yarnand PnP artifacts, updates VS Code guidance to usenode_modules, and keeps the pack output compatible with the existing publish pipeline.For pnpm 11.6 specifically, the transitive
synckitoverride moved frompackage.jsonintopnpm-workspace.yamlbecause pnpm 11 no longer reads pnpm-specific settings frompackage.json. The workspace file also explicitly allows the trustedunrs-resolverpostinstall script, which pnpm 11 now gates behind its supply-chain policy.I validated the updated root init flow, the package init wrapper, package build/test, and package pack flow with the migrated setup.