all: Migrate to pnpm workspaces with parallel builds#2354
Draft
bwateratmsft wants to merge 4 commits into
Draft
Conversation
0407514 to
65423fb
Compare
- Add root package.json with pnpm@10.12.1 packageManager field - Add pnpm-workspace.yaml with catalog versions for shared deps (@types/node, @types/vscode, tsx, esbuild, etc.) - Convert all package scripts from npm to pnpm - Use catalog: protocol for shared dependency versions - Use node-linker=hoisted in .npmrc for compatibility - Add skipLibCheck to tsconfig.base.json for monorepo type isolation - Consolidate serialize-javascript override to root pnpm.overrides - Remove all per-package package-lock.json files (single pnpm-lock.yaml) CI/CD: - GitHub Actions: collapse matrix build to single job using pnpm -r --parallel for lint/build/test/package - AzDO pipeline: collapse 8 jobs to single job at repo root with packageManager: pnpm Packages remain independent (use published versions of each other) so all operations run fully in parallel. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
65423fb to
4bc247c
Compare
5d06c3b to
9236a3a
Compare
bwateratmsft
commented
Jun 23, 2026
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
f574f44 to
b3edf95
Compare
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.
Summary
Migrates the monorepo from npm (per-package lockfiles) to pnpm 11.8.0 with workspaces, catalog versions, and parallel CI builds.
Key changes
Infrastructure
package.jsonwithpackageManager: pnpm@11.8.0and parallel workspace scripts (sequential for tests via--workspace-concurrency=1)pnpm-workspace.yamlwith catalog versions for shared deps,publicHoistPattern(minimal: eslint, typescript, mocha, chai),overrides, andallowBuildspackage-lock.jsonfiles and.npmrc(settings moved topnpm-workspace.yaml)CI Pipelines
packages.yml: collapsed from matrix to single job callingjobs.ymlwithpackage_manager: pnpmjobs.yml: bumpedactions/checkoutandactions/setup-nodefrom v3 to v4 for proper pnpm store cachingbuild.yml: collapsed to a single job withpackageManager: pnpm(matchingvscode-containersapproach)Shared VS Code test download
.vscode-test.mjsnow setscachePathto a shared root-level.vscode-test/directory, so VS Code is downloaded once and reused across all test packages (utils,appservice,azure)Phantom dependency fixes (exposed by pnpm strict isolation)
dayjs@azure/core-auth@azure/arm-resources@types/reactreact; pnpm isolation broke resolution@types/react-domvscode-jsonrpc@github/copilot-sdk's.d.tsimportsvscode-jsonrpc/nodewhich fails without exports mapCatalog version bumps (where a package got a newer range)
@azure/core-rest-pipeline^1.10.3^1.23.0@azure/core-client^1.7.2^1.10.1dayjs^1.11.2^1.11.19p-retry v3 → v8 (appservice)
Upgraded
p-retryfrom v3 to v8 (ESM-only, built-in types). All 3 call sites rewritten:retry()→pRetry(),retry.AbortError→ namedAbortErrorimport@types/p-retrysyncTriggersPostDeploy.ts,siteFiles.ts,kuduUtils.tsAzure SDK type casts (appservice)
@azure/arm-appinsights@5-beta,@azure/arm-resources@6,@azure/arm-resourcegraph@5-betacause type identity mismatches under pnpm's isolatednode_modules(duplicate copies of@azure/core-clientmeanServiceClientis a different type identity than under npm's flat hoisting). Fixed withas unknown as AzExtClientType<T>casts inazureClients.ts.skipLibCheck usage
Only one place:
utils/package.jsonbuild:cjsscript.vscode-jsonrpchas noexportsmap and its type declarations fail undermoduleResolution: nodenextin the CJS output. Does not affect the main ESM build or any other package.Other
pnpm exec→pnpxin all l10n scriptsnpm run→pnpm run,npm pack→pnpm packacross all packagesserialize-javascriptmoved to workspace-leveloverridesfor consistent secure versionNotes
workspace:protocol)authuses@types/vscode@1.106.0andwebviewuses^1.104.0— not yet on catalog (1.105.0)