feat: migrate from yarn to pnpm with makage + dist/ publishing#37
Merged
pyramation merged 7 commits intomainfrom Mar 1, 2026
Merged
feat: migrate from yarn to pnpm with makage + dist/ publishing#37pyramation merged 7 commits intomainfrom
pyramation merged 7 commits intomainfrom
Conversation
- Remove yarn artifacts (yarn.lock, .yarnrc) and add pnpm-workspace.yaml - Update all 31 package.json files: makage build, workspace:*, prepack, constructive publishing pattern - Fix self-imports in core package (wallet-manager.ts, platform-wallet.ts) - Add missing deps for pnpm strict resolution (@interchainjs/amino, events, @chain-registry/types, etc.) - Tolerant builds for 5 packages with pre-existing type errors - Update CI workflows (unit-test.yaml, e2e-test.yaml) to use pnpm - Add moduleNameMapper for jest self-import resolution in core - Update all README files to reference pnpm instead of yarn - Add copyfiles devDep to vue package - Update lerna.json npmClient to pnpm
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
…ackages, consolidate license to MIT
…for Playwright tests
…running in unit test CI
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.
feat: migrate from yarn to pnpm with makage + dist/ publishing
Summary
Full migration of interchain-kit monorepo from yarn to pnpm, adopting the same patterns successfully applied to telescope and cosmos-kit.
Key changes across all 31 publishable packages:
yarn.lockfiles (root + 3 sub-locks), addedpnpm-workspace.yaml, updated all scripts to usepnpm -rcommandstsc && tsc -p tsconfig.esm.json && copyfilesbuilds withmakage build(except vue/vite and 5 tolerant-build packages)dist/prefix frommain/module/types, removedfilesfield, setpublishConfig.directory: "dist"— matching constructive-io packagesworkspace:*protocol for all internal deps (resolved to real versions at publish time by Lerna)prepare→prepacklifecycle hook (runs beforenpm pack/publish, not on every install)vitefor the vue package)pnpm/action-setup@v4,actions/checkout@v4,actions/setup-node@v4package.jsonfiles updated to"license": "MIT"(previously"SEE LICENSE IN LICENSE")Source code changes (minimal):
packages/core/src/wallet-manager.tsandplatform-wallet.ts(changedfrom '@interchain-kit/core'to relative imports)tsconfig.jsonpaths mapping for jest test resolutionmoduleNameMapperto core'sjest.config.jsfor self-import resolutionUpdates since last revision
Example apps updated to
workspace:*: All 4 example apps (e2e, react, vue, vanilla) now useworkspace:*for workspace package deps. Updated@interchainjsversions from pinned1.17.3to^1.20.0(matching newly published versions). Removed stalegitHeadfields.Next.js transpilePackages config: Added
transpilePackagestoexamples/e2e/next.config.tsto handle pnpm workspace module resolution with Next.js turbopack. Lists all@interchain-kit/*,@interchainjs/*, andinterchainjspackages.e2e/ added to pnpm workspace: Added
e2edirectory topnpm-workspace.yamland declared@interchain-kit/core: "workspace:*"ine2e/package.json. This fixes Playwright test imports under pnpm strict resolution (tests importWalletStatefrom@interchain-kit/core).Root test script excludes e2e: Updated
pnpm run testto filter out@interchain-kit/e2epackage, preventing Playwright from running during unit test CI (Playwright browsers aren't installed in that workflow).Removed
packageManagerfield from rootpackage.jsonto resolve conflict withstarship-action@1.0.0, which internally runssetup-nodewithcache: yarnand chokes on"packageManager": "pnpm@9.15.4". The pnpm version (9.15.4) is now specified directly in both CI workflow files via thepnpm/action-setupversionparameter.Review & Testing Checklist for Human
Verify license change is intentional: All 32
package.jsonfiles changed from"license": "SEE LICENSE IN LICENSE"to"license": "MIT". Confirm no packages had different intended licensing (e.g., Apache dual-license).Verify publishing works end-to-end: The constructive publishing pattern (no
dist/prefix in paths,publishConfig.directory: "dist") is a significant change. Test withlerna publish --dry-runor manuallycd packages/core/dist && npm packto verify the tarball structure is correct.Check example app
workspace:*resolution: Example apps now useworkspace:*for local packages and^1.20.0for@interchainjs/*. Verify these resolve correctly during development (pnpm installin examples/) and that the^1.20.0versions are compatible.Test Next.js transpilePackages: The
transpilePackageslist inexamples/e2e/next.config.tsis manually enumerated. If new workspace packages are added in the future, this list needs updating. Consider documenting this requirement.Check tolerant build packages: 5 packages use
(tsc || true)to ignore pre-existing type errors:cosmos-extension-metamask,cosmostation-extension,leap-cosmos-extension-metamask,mock-wallet,station-extension. Verify theirdist/output is complete and functional.Test local development workflow: Run
pnpm install && pnpm run build && pnpm run testfrom repo root. Note: without thepackageManagerfield, developers won't get automatic pnpm version enforcement via corepack — consider documenting the required pnpm version in README.Notes
@interchainjs/cryptoand@cosmjs/cryptois a known upstream problem, not caused by this migration.examples/reacthas 82 pre-existing lint errors (not caused by migration)Cannot find module '@interchainjs/cosmos/types/wallet') are pre-existing issues, not caused by the migration