migrate from classic yarn to pnpm - #1400
Conversation
There was a problem hiding this comment.
Pull request overview
Migrates the repo from Yarn classic to pnpm, updating developer workflows, CI, and test/build tooling to use pnpm consistently.
Changes:
- Update
package.jsonscripts and setpackageManagerto pnpm. - Adjust Vitest configs and test utilities to select the build-under-test via aliases (including axios vs fetch variants).
- Update CI workflows, docs, and the Makefile to install/run via pnpm (Corepack).
Reviewed changes
Copilot reviewed 16 out of 18 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| test/tsconfig.json | Adds TS path aliases used by tests to import the build-under-test. |
| test/test-utils/stellar-sdk-import.ts | Switches test imports to Vitest aliases; removes dynamic import logic. |
| test/e2e/README.md | Updates e2e commands from yarn to pnpm. |
| package.json | Sets pnpm as package manager; converts scripts/lint-staged to pnpm. |
| config/vitest.config.ts | Adds TRANSPORT-based aliasing + coverage scoping for axios vs fetch builds. |
| config/vitest.config.browser.ts | Adds aliasing for browser tests; updates coverage include; inlines an extra dep. |
| config/vitest.config.axios.ts | Removes dedicated axios config in favor of TRANSPORT-based config. |
| README.md | Updates installation + contributor instructions to pnpm/Corepack. |
| Makefile | Updates dts-xdr generation container steps to use Corepack + pnpm. |
| CONTRIBUTING.md | Updates dependency install step to pnpm. |
| .github/workflows/tests.yml | Migrates CI test job install/build/test steps to pnpm with caching. |
| .github/workflows/npm_publish.yml | Migrates publish workflow to pnpm with caching. |
| .github/workflows/gh_pages.yaml | Migrates docs build workflow to pnpm with caching. |
| .github/workflows/format.yml | Migrates formatting workflow to pnpm (but currently has YAML indentation issues). |
| .github/workflows/e2e.yml | Migrates e2e workflow to pnpm (but currently has YAML indentation issues). |
| .github/workflows/bundle_size.yml | Updates commented bundle-size workflow snippets to pnpm. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - name: Setup pnpm | ||
| uses: pnpm/action-setup@v4 | ||
|
|
There was a problem hiding this comment.
The steps: list is mis-indented: - name: Setup pnpm is aligned with steps: instead of being nested under it, and the following - name: Checkout is indented differently. This will make the workflow YAML invalid; indent all step items consistently (same as the other workflows) so each - name is directly under steps:.
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 |
| // The axios lib tree still has a fetch-backed `http-client/index.js` (the file | ||
| // itself isn't aliased — only downstream imports of `../http-client` are). So | ||
| // to get the axios client we reach for the explicit `http-client/axios` subpath. | ||
| export async function getHttpClient() { | ||
| const subpath = | ||
| typeof process !== "undefined" && process.env?.TRANSPORT === "axios" | ||
| ? "/http-client/axios" | ||
| : "/http-client"; | ||
| const httpClientModule = await import(`${getLibPath()}${subpath}`); | ||
| return httpClientModule.httpClient; | ||
| return httpClient; |
There was a problem hiding this comment.
The comment above getHttpClient still describes the old behavior (manual dynamic import and needing an explicit axios subpath because the http-client entry wasn’t aliased). With the new @test/http-client alias selecting the correct build, this is now misleading—please update or remove the comment so it matches the current implementation.
* [Modernization] Make fetch default (#1394) * Replace __USE_AXIOS__ dynamic require with static fetch default * Add babel and webpack aliasing to emit axios variant from shared source * Flip package.json exports: fetch default, /axios opt-in, drop /no-axios * Update eventsource and remove no-eventsource build (#1395) * update eventsource to v4.1.0 and remove conditional import of eventsource * remove the dom-monkeypatch as its now included in the tsconfig lib field * build and export cjs and esm build varients, remove export of umd bundles * Base Migration (#1399) * move stellar-base src under src/base * migrate from classic yarn to pnpm (#1400) * remove randomBytes for universal crypto.getRandomValues * replace sha.js with noble/hashes and update to version 2.2.0 * update BigNumber to v11.0.0 * replace noble/curves with noble/ed25519 for reduced bundle size * replace toml with smol-toml * replace URI for native URL (#1402) * refactor: replace URI usage for native URL + URLSearchParam objects * allow expandUriTemplate to handle relative templated links * Tooling modernization: Node 22, husky v9, pnpm minimumReleaseAge, drop nyc (#1408) * Update husky config + remove nyc * Root .nvmrc + bump Node to v22 * pnpm minimumReleaseAge config * Use pnpm workspace (#1417) * New docs (#1413) * TypeDoc setup * P27 updates (#1429) * Update XDR base URLs and improve Makefile for TypeScript definitions * pull and regenerate xdr definitions for p27 * handle signing the new SorobanCredential varients * add CAP-71 delegate-credential signing helpers - buildAuthorizationEntryPreimage: expose the signature payload (authorizeEntry now builds its preimage through it) - buildWithDelegatesEntry: wrap ADDRESS/ADDRESS_V2 into ADDRESS_WITH_DELEGATES, sorting + de-duping delegates; top-level signature defaults to Void - authorizeEntry: optional forAddress to fill a specific node (top-level or a delegate) instead of always the top-level - export the new helpers + DelegateSignature/BuildWithDelegatesParams from base * Update readme + pre-push check for docs (#1430) * Pre-push hook + updated docs * Update pre-push hook * Add @stellar/stellar-base migration guide to the installation docs * Map xdr.HashIdPreimage in typedoc to fix docs:reference build --------- Co-authored-by: oceans404 <[email protected]> * Tx builder type regression (#1438) * Implement TransactionSource interface for Account and MuxedAccount classes; update TransactionBuilder to use TransactionSource * TSDoc: Replace @internal with @ignore tag (#1436) * TSDoc: Replace @internal with @ignore tag * Add friendbot call builder items * Dependency updates (#1433) * Minor: axios + bignumber.js * Patch: vitest + @vitest * Minor astro + patch @astro * Minor: esbuild to v0.27.7 (not latest v0.28.0) * Some patch + minor * Major: @rollup/plugin-commonjs * Major: cross-env + dotenv * Major: jsdom * Updated pnpm-lock * Auth flag namespace (#1441) * add back AuthFlag namespace * fix: update build types script for axios to ensure generated types are copied correctly * P27 guide (#1440) * add p27 guide * docs: add task-oriented guides (connect-and-fund, send-a-payment) + internal-link tooling (#1434) * docs: add internal-link tooling (base-prefix rewriting + dead-link validation) * docs: add connect-and-fund and send-a-payment guides * docs: add issue-an-asset guide * docs: refine issue-an-asset guide (token framing, typed helper, review fixes) * docs: add query-and-stream guide * docs: add handle-errors guide * docs: link guides 02-04 to the handle-errors guide Add error-handling pointers now that guide 05 exists (sibling-link upgrade): a primary pointer in guide 02's submit section and lighter pointers in 03/04. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> * docs: add invoke-a-contract guide (06) Teaches invoking a deployed Soroban contract from JS with contract.Client and AssembledTransaction: connect over RPC, preview a call by simulation, then sign and send a state change. Uses the increment contract; deployment is linked out to the Stellar CLI tutorial. Regenerate llms bundles. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> * docs: add contract-auth guide (07) Covers signing Soroban contract authorization for an account other than the transaction source, framed for AddressV2 (CAP-0071-02) readiness: the same code is correct on the legacy ADDRESS credential today and on AddressV2 after the Protocol 28 flip. Distinguishes envelope signing from authorization-entry signing, and gives a before/after migration for hand-rolled signers (buildAuthorizationEntryPreimage / authorizeEntry). Also upgrades the Invoke a Contract guide's closing link to point at this guide, replaces numbered guide references with named links, and regenerates the llms bundles. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> * docs: fold versioning into the home page, drop it as a guide Versioning and compatibility is reference material, not a task how-to, so it moves out of the guides nav into a 'Versioning and compatibility' section on the home page (README -> index). Repoints the agents.md reference to the new home-page anchor and regenerates index.md + llms bundles. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> * docs: add migration guide (00) A versioned breaking-changes guide for upgrading to the v16 modernization release (base fold-in, native fetch, ESM, Node 22) and Protocol 27 / 28 Soroban auth (AddressV2). Modeled on viem's migration guide: one section per version, one entry per change, with before/after diffs. Sorts first in the guides nav and opens with a pointer to the home-page versioning section. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> * docs: link API references in migration guide (00) Link the first mention of each documented symbol (Keypair, the auth helpers, contract.Client/basicNodeSigner/signAuthEntries, rpc.Server/Horizon.Server, getLatestLedger, BalanceResponse, SigningCallback) to its reference page, base-agnostic, matching guide 07. Anchors verified against the rendered reference pages; internal link check passes. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> --------- Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]> Co-authored-by: Ryan Yang <[email protected]> Co-authored-by: Iveta <[email protected]> * update package version to 16.0.0-rc.1 * fix: improve token formatting logic --------- Co-authored-by: Iveta <[email protected]> Co-authored-by: oceans404 <[email protected]> Co-authored-by: Steph <[email protected]> Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]> Co-authored-by: Iveta <[email protected]>
What