-
Notifications
You must be signed in to change notification settings - Fork 3.5k
refactor/switch-yarn-to-pnpm #12260
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor/switch-yarn-to-pnpm #12260
Conversation
Replace Yarn usage with pnpm in CI workflows to standardize package management and leverage pnpm's store/cache behavior. - Use pnpm/action-setup to install pnpm (v) instead of enabling corepack and preparing Yarn. - Retrieve pnpm store path and update cache actions to cache the pnpm store and use pnpm-lock.yaml for cache keys and restores. - Replace yarn commands with pnpm equivalents across workflows: install, i18n:sync/translate, format, build:* and tsx invocation. - Avoid committing lockfile changes by resetting pnpm-lock.yaml instead of yarn.lock when checking for changes. - Update install flags: use pnpm install --frozen-lockfile / --install semantics where appropriate. These changes unify dependency tooling, improve caching correctness, and ensure CI uses pnpm-specific lockfile and cache paths.
Update .husky/pre-commit to run pnpm lint-staged instead of yarn. This aligns the pre-commit hook with the project's package manager and ensures lint-staged runs using pnpm's environment and caching.
|
Note This comment was translated by Claude. Let Droid do it fully automatically, let's see how it works 🤣 Original Content让 Droid 全自动整的,试试效果 🤣 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR migrates the project's package manager from Yarn to pnpm, standardizing tooling across CI/CD workflows, development scripts, and pre-commit hooks. The migration aims to improve caching correctness and leverage pnpm's store behavior while maintaining equivalent functionality.
Key changes:
- Replaced Yarn with pnpm for package management using [email protected]
- Migrated CI workflows to use pnpm/action-setup with pnpm store caching
- Converted Yarn patches to pnpm patchedDependencies format in patches/ directory
- Updated all npm scripts and documentation to reference pnpm commands
Reviewed changes
Copilot reviewed 16 out of 40 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| pnpm-workspace.yaml | Added pnpm workspace configuration defining packages/* workspace pattern |
| patches/* (16 files) | All patch files migrated from .yarn/patches/ to patches/ directory for pnpm compatibility |
| package.json | Replaced Yarn workspaces with pnpm configuration; converted resolutions to overrides and patchedDependencies; updated packageManager to [email protected]; replaced yarn commands with pnpm equivalents |
| packages/*/package.json | Updated packageManager field from [email protected] to [email protected] |
| .github/workflows/* | Updated all 6 CI workflows to install pnpm via pnpm/action-setup, use pnpm store caching, and execute pnpm commands instead of yarn |
| .npmrc | Added pnpm-specific settings: shamefully-hoist, strict-peer-dependencies, auto-install-peers |
| .yarnrc.yml | Removed Yarn configuration file |
| .husky/pre-commit | Changed lint-staged invocation from yarn to pnpm |
| CLAUDE.md | Updated all documentation references from yarn to pnpm commands |
| electron.vite.config.ts | Removed @swc/plugin-styled-components configuration and added disableOxcRecommendation flag |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Note This comment was translated by Claude. As long as the patch succeeds, it's fine. Original Content只要patch能成功就行 |
|
Note This comment was translated by Claude. The patch appears to have succeeded. Original Content目前看 patch 应该成功了 |
Remove the explicit `with: version: 9` lines from multiple GitHub Actions workflows (auto-i18n.yml, nightly-build.yml, pr-ci.yml, update-app-upgrade-config.yml, sync-to-gitcode.yml, release.yml). The workflows still call `pnpm/action-setup@v4` but no longer hardcode a pnpm version. This simplifies maintenance and allows the action to resolve an appropriate pnpm version (or use its default) without needing updates whenever the pinned version becomes outdated. It reduces churn when bumping pnpm across CI configs and prevents accidental pin drift between workflow files.
|
Note This comment was translated by Claude. It would be best to build and test on both Windows and macOS to be extra safe. Original Content最好 windows 和 macos 都打包一个,运行看下,这样更加保险 |
| "@radix-ui/react-context-menu": "^2.2.16", | ||
| "@reduxjs/toolkit": "^2.2.5", | ||
| "@shikijs/markdown-it": "^3.12.0", | ||
| "@swc/core": "^1.15.8", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note
This comment was translated by Claude.
Don't understand why there are new dependencies
Original Content
不明白为什么有新的依赖
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note
This comment was translated by Claude.
There's no import anywhere, it should be a mistake.
Original Content
没有地方import,应该是写错了。
| "@napi-rs/[email protected]": "patches/@napi-rs-system-ocr-npm-1.0.2-59e7a78e8b.patch", | ||
| "[email protected]": "patches/tesseract.js-npm-6.0.1-2562a7e46d.patch", | ||
| "@ai-sdk/[email protected]": "patches/@ai-sdk-google-npm-2.0.49-84720f41bd.patch", | ||
| "@ai-sdk/[email protected]": "patches/@ai-sdk-openai-npm-2.0.85-27483d1d6a.patch", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note
This comment was translated by Claude.
@ai-sdk/[email protected] is using the unpatched '@ai-sdk/openai': 2.0.89
Original Content
@ai-sdk/[email protected]正在使用未patch的'@ai-sdk/openai': 2.0.89
| "@anthropic-ai/[email protected]": "patches/@anthropic-ai-claude-agent-sdk-npm-0.1.62-23ae56f8c8.patch", | ||
| "@napi-rs/[email protected]": "patches/@napi-rs-system-ocr-npm-1.0.2-59e7a78e8b.patch", | ||
| "[email protected]": "patches/tesseract.js-npm-6.0.1-2562a7e46d.patch", | ||
| "@ai-sdk/[email protected]": "patches/@ai-sdk-google-npm-2.0.49-84720f41bd.patch", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note
This comment was translated by Claude.
@ai-sdk/google-vertex is using an unpatched @ai-sdk/google: 2.0.52
Original Content
@ai-sdk/google-vertex正在使用未patch的'@ai-sdk/google': 2.0.52
- Comment out shamefully-hoist in .npmrc for better pnpm compatibility - Add React-related packages to optimizeDeps in electron.vite.config.ts - Add missing peer dependencies and packages that were previously hoisted 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
|
Note This comment was translated by Claude. You need to remove Original Content
|
|
Note This comment was translated by Claude. After switching to pnpm, the size increased by 10MB. This was tested on macOS ARM. Original Content换pnpm后,多出了10M大小,在macos arm上面测试的。 |
- Simplify .npmrc to only essential electron mirror config - Move platform-specific dependencies to devDependencies - Pin sharp version to 0.34.3 for consistency - Update sharp-libvips versions to 1.2.4 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
Reference: .yarn-state-copy.yml. These phantom dependencies should use top-level package of that version in node_modules
bbe375d to
f1215f5
Compare
Ensure consistent dependency resolution by removing caret ranges and pinning all @tiptap packages to exact version 3.2.0
Remove caret from version specifier to prevent automatic upgrades and ensure consistent dependencies
Update package.json and pnpm-lock.yaml to use @types/node version 22.17.2 instead of 22.19.3 to maintain consistency across dependencies
… to exact numbers Remove caret (^) from version ranges to ensure consistent dependency resolution across environments
Move @ant-design/icons, chalk, form-data, and open from dependencies to devDependencies Update pnpm-lock.yaml to reflect dependency changes
|
Note This comment was translated by Claude. Try building it again. Original Content再打包试试 |
- Add new dependencies: md5, @libsql/win32-x64-msvc, @strongtz/win32-arm64-msvc, bonjour-service, emoji-picker-element-data, gray-matter, js-yaml - Remove redundant dependencies from devDependencies
add new dependencies to support cross-origin requests, mathematical notation rendering and data compression
…on and pnpm-lock.yaml
* refactor: switch workflows from yarn to pnpm Replace Yarn usage with pnpm in CI workflows to standardize package management and leverage pnpm's store/cache behavior. - Use pnpm/action-setup to install pnpm (v) instead of enabling corepack and preparing Yarn. - Retrieve pnpm store path and update cache actions to cache the pnpm store and use pnpm-lock.yaml for cache keys and restores. - Replace yarn commands with pnpm equivalents across workflows: install, i18n:sync/translate, format, build:* and tsx invocation. - Avoid committing lockfile changes by resetting pnpm-lock.yaml instead of yarn.lock when checking for changes. - Update install flags: use pnpm install --frozen-lockfile / --install semantics where appropriate. These changes unify dependency tooling, improve caching correctness, and ensure CI uses pnpm-specific lockfile and cache paths. * build: switch pre-commit hook to pnpm lint-staged Update .husky/pre-commit to run pnpm lint-staged instead of yarn. This aligns the pre-commit hook with the project's package manager and ensures lint-staged runs using pnpm's environment and caching. * chore(ci): remove pinned pnpm version from GH Action steps Remove the explicit `with: version: 9` lines from multiple GitHub Actions workflows (auto-i18n.yml, nightly-build.yml, pr-ci.yml, update-app-upgrade-config.yml, sync-to-gitcode.yml, release.yml). The workflows still call `pnpm/action-setup@v4` but no longer hardcode a pnpm version. This simplifies maintenance and allows the action to resolve an appropriate pnpm version (or use its default) without needing updates whenever the pinned version becomes outdated. It reduces churn when bumping pnpm across CI configs and prevents accidental pin drift between workflow files. * build: Update pnpm to 10.27.0 and add onlyBuiltDependencies config * Update @cherrystudio/openai to 6.15.0 and consolidate overrides * Add @langchain/core to overrides * Add override for openai-compatible 1.0.27 * build: optimize pnpm config and add missing dependencies - Comment out shamefully-hoist in .npmrc for better pnpm compatibility - Add React-related packages to optimizeDeps in electron.vite.config.ts - Add missing peer dependencies and packages that were previously hoisted 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <[email protected]> * build: refine pnpm configuration and dependency management - Simplify .npmrc to only essential electron mirror config - Move platform-specific dependencies to devDependencies - Pin sharp version to 0.34.3 for consistency - Update sharp-libvips versions to 1.2.4 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <[email protected]> * reduce app size * format * build: remove unnecessary disableOxcRecommendation option from react plugin configuration * docs: Replace yarn commands with pnpm in documentation and scripts * Revert "build: optimize pnpm config and add missing dependencies" This reverts commit acffad3. * build: import dependencies from yarn.lock * build: Add some phantom dependencies and reorganize dependencies * build: Keep consistent by removing types of semver It's not in the previous package.json * build: Add some phantom dependencies Keep same version with yarn.lock * build: Add form-data dependency version 4.0.4 * Add chalk dependency * build: downgrade some dependencies Reference: .yarn-state-copy.yml. These phantom dependencies should use top-level package of that version in node_modules * build: Add phantom dependencies * build: pin tiptap dependencies to exact versions Ensure consistent dependency resolution by removing caret ranges and pinning all @tiptap packages to exact version 3.2.0 * chore: pin embedjs dependencies to exact versions * build: pin @modelcontextprotocol/sdk to exact version 1.23.0 Remove caret from version specifier to prevent automatic upgrades and ensure consistent dependencies * chore: update @types/node dependency to 22.17.2 Update package.json and pnpm-lock.yaml to use @types/node version 22.17.2 instead of 22.19.3 to maintain consistency across dependencies * build: move some dependencies to dev deps and pin dependency versions to exact numbers Remove caret (^) from version ranges to ensure consistent dependency resolution across environments * chore: move dependencies from prod to dev and update lockfile Move @ant-design/icons, chalk, form-data, and open from dependencies to devDependencies Update pnpm-lock.yaml to reflect dependency changes * build: update package dependencies - Add new dependencies: md5, @libsql/win32-x64-msvc, @strongtz/win32-arm64-msvc, bonjour-service, emoji-picker-element-data, gray-matter, js-yaml - Remove redundant dependencies from devDependencies * build: add cors, katex and pako dependencies add new dependencies to support cross-origin requests, mathematical notation rendering and data compression * move some js deps to dev deps * test: update snapshot tests for Spinner and InputEmbeddingDimension * chore: exclude .zed directory from biome formatting * Update @ai-sdk/openai-compatible patch hash * chore: update @kangfenmao/keyv-storage to version 0.1.3 in package.json and pnpm-lock.yaml --------- Co-authored-by: icarus <[email protected]> Co-authored-by: beyondkmp <[email protected]> Co-authored-by: kangfenmao <[email protected]>
* refactor: switch workflows from yarn to pnpm Replace Yarn usage with pnpm in CI workflows to standardize package management and leverage pnpm's store/cache behavior. - Use pnpm/action-setup to install pnpm (v) instead of enabling corepack and preparing Yarn. - Retrieve pnpm store path and update cache actions to cache the pnpm store and use pnpm-lock.yaml for cache keys and restores. - Replace yarn commands with pnpm equivalents across workflows: install, i18n:sync/translate, format, build:* and tsx invocation. - Avoid committing lockfile changes by resetting pnpm-lock.yaml instead of yarn.lock when checking for changes. - Update install flags: use pnpm install --frozen-lockfile / --install semantics where appropriate. These changes unify dependency tooling, improve caching correctness, and ensure CI uses pnpm-specific lockfile and cache paths. * build: switch pre-commit hook to pnpm lint-staged Update .husky/pre-commit to run pnpm lint-staged instead of yarn. This aligns the pre-commit hook with the project's package manager and ensures lint-staged runs using pnpm's environment and caching. * chore(ci): remove pinned pnpm version from GH Action steps Remove the explicit `with: version: 9` lines from multiple GitHub Actions workflows (auto-i18n.yml, nightly-build.yml, pr-ci.yml, update-app-upgrade-config.yml, sync-to-gitcode.yml, release.yml). The workflows still call `pnpm/action-setup@v4` but no longer hardcode a pnpm version. This simplifies maintenance and allows the action to resolve an appropriate pnpm version (or use its default) without needing updates whenever the pinned version becomes outdated. It reduces churn when bumping pnpm across CI configs and prevents accidental pin drift between workflow files. * build: Update pnpm to 10.27.0 and add onlyBuiltDependencies config * Update @cherrystudio/openai to 6.15.0 and consolidate overrides * Add @langchain/core to overrides * Add override for openai-compatible 1.0.27 * build: optimize pnpm config and add missing dependencies - Comment out shamefully-hoist in .npmrc for better pnpm compatibility - Add React-related packages to optimizeDeps in electron.vite.config.ts - Add missing peer dependencies and packages that were previously hoisted 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <[email protected]> * build: refine pnpm configuration and dependency management - Simplify .npmrc to only essential electron mirror config - Move platform-specific dependencies to devDependencies - Pin sharp version to 0.34.3 for consistency - Update sharp-libvips versions to 1.2.4 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <[email protected]> * reduce app size * format * build: remove unnecessary disableOxcRecommendation option from react plugin configuration * docs: Replace yarn commands with pnpm in documentation and scripts * Revert "build: optimize pnpm config and add missing dependencies" This reverts commit acffad3. * build: import dependencies from yarn.lock * build: Add some phantom dependencies and reorganize dependencies * build: Keep consistent by removing types of semver It's not in the previous package.json * build: Add some phantom dependencies Keep same version with yarn.lock * build: Add form-data dependency version 4.0.4 * Add chalk dependency * build: downgrade some dependencies Reference: .yarn-state-copy.yml. These phantom dependencies should use top-level package of that version in node_modules * build: Add phantom dependencies * build: pin tiptap dependencies to exact versions Ensure consistent dependency resolution by removing caret ranges and pinning all @tiptap packages to exact version 3.2.0 * chore: pin embedjs dependencies to exact versions * build: pin @modelcontextprotocol/sdk to exact version 1.23.0 Remove caret from version specifier to prevent automatic upgrades and ensure consistent dependencies * chore: update @types/node dependency to 22.17.2 Update package.json and pnpm-lock.yaml to use @types/node version 22.17.2 instead of 22.19.3 to maintain consistency across dependencies * build: move some dependencies to dev deps and pin dependency versions to exact numbers Remove caret (^) from version ranges to ensure consistent dependency resolution across environments * chore: move dependencies from prod to dev and update lockfile Move @ant-design/icons, chalk, form-data, and open from dependencies to devDependencies Update pnpm-lock.yaml to reflect dependency changes * build: update package dependencies - Add new dependencies: md5, @libsql/win32-x64-msvc, @strongtz/win32-arm64-msvc, bonjour-service, emoji-picker-element-data, gray-matter, js-yaml - Remove redundant dependencies from devDependencies * build: add cors, katex and pako dependencies add new dependencies to support cross-origin requests, mathematical notation rendering and data compression * move some js deps to dev deps * test: update snapshot tests for Spinner and InputEmbeddingDimension * chore: exclude .zed directory from biome formatting * Update @ai-sdk/openai-compatible patch hash * chore: update @kangfenmao/keyv-storage to version 0.1.3 in package.json and pnpm-lock.yaml --------- Co-authored-by: icarus <[email protected]> Co-authored-by: beyondkmp <[email protected]> Co-authored-by: Claude Sonnet 4.5 <[email protected]> Co-authored-by: kangfenmao <[email protected]>
* refactor: switch workflows from yarn to pnpm Replace Yarn usage with pnpm in CI workflows to standardize package management and leverage pnpm's store/cache behavior. - Use pnpm/action-setup to install pnpm (v) instead of enabling corepack and preparing Yarn. - Retrieve pnpm store path and update cache actions to cache the pnpm store and use pnpm-lock.yaml for cache keys and restores. - Replace yarn commands with pnpm equivalents across workflows: install, i18n:sync/translate, format, build:* and tsx invocation. - Avoid committing lockfile changes by resetting pnpm-lock.yaml instead of yarn.lock when checking for changes. - Update install flags: use pnpm install --frozen-lockfile / --install semantics where appropriate. These changes unify dependency tooling, improve caching correctness, and ensure CI uses pnpm-specific lockfile and cache paths. * build: switch pre-commit hook to pnpm lint-staged Update .husky/pre-commit to run pnpm lint-staged instead of yarn. This aligns the pre-commit hook with the project's package manager and ensures lint-staged runs using pnpm's environment and caching. * chore(ci): remove pinned pnpm version from GH Action steps Remove the explicit `with: version: 9` lines from multiple GitHub Actions workflows (auto-i18n.yml, nightly-build.yml, pr-ci.yml, update-app-upgrade-config.yml, sync-to-gitcode.yml, release.yml). The workflows still call `pnpm/action-setup@v4` but no longer hardcode a pnpm version. This simplifies maintenance and allows the action to resolve an appropriate pnpm version (or use its default) without needing updates whenever the pinned version becomes outdated. It reduces churn when bumping pnpm across CI configs and prevents accidental pin drift between workflow files. * build: Update pnpm to 10.27.0 and add onlyBuiltDependencies config * Update @cherrystudio/openai to 6.15.0 and consolidate overrides * Add @langchain/core to overrides * Add override for openai-compatible 1.0.27 * build: optimize pnpm config and add missing dependencies - Comment out shamefully-hoist in .npmrc for better pnpm compatibility - Add React-related packages to optimizeDeps in electron.vite.config.ts - Add missing peer dependencies and packages that were previously hoisted 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <[email protected]> * build: refine pnpm configuration and dependency management - Simplify .npmrc to only essential electron mirror config - Move platform-specific dependencies to devDependencies - Pin sharp version to 0.34.3 for consistency - Update sharp-libvips versions to 1.2.4 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <[email protected]> * reduce app size * format * build: remove unnecessary disableOxcRecommendation option from react plugin configuration * docs: Replace yarn commands with pnpm in documentation and scripts * Revert "build: optimize pnpm config and add missing dependencies" This reverts commit acffad3. * build: import dependencies from yarn.lock * build: Add some phantom dependencies and reorganize dependencies * build: Keep consistent by removing types of semver It's not in the previous package.json * build: Add some phantom dependencies Keep same version with yarn.lock * build: Add form-data dependency version 4.0.4 * Add chalk dependency * build: downgrade some dependencies Reference: .yarn-state-copy.yml. These phantom dependencies should use top-level package of that version in node_modules * build: Add phantom dependencies * build: pin tiptap dependencies to exact versions Ensure consistent dependency resolution by removing caret ranges and pinning all @tiptap packages to exact version 3.2.0 * chore: pin embedjs dependencies to exact versions * build: pin @modelcontextprotocol/sdk to exact version 1.23.0 Remove caret from version specifier to prevent automatic upgrades and ensure consistent dependencies * chore: update @types/node dependency to 22.17.2 Update package.json and pnpm-lock.yaml to use @types/node version 22.17.2 instead of 22.19.3 to maintain consistency across dependencies * build: move some dependencies to dev deps and pin dependency versions to exact numbers Remove caret (^) from version ranges to ensure consistent dependency resolution across environments * chore: move dependencies from prod to dev and update lockfile Move @ant-design/icons, chalk, form-data, and open from dependencies to devDependencies Update pnpm-lock.yaml to reflect dependency changes * build: update package dependencies - Add new dependencies: md5, @libsql/win32-x64-msvc, @strongtz/win32-arm64-msvc, bonjour-service, emoji-picker-element-data, gray-matter, js-yaml - Remove redundant dependencies from devDependencies * build: add cors, katex and pako dependencies add new dependencies to support cross-origin requests, mathematical notation rendering and data compression * move some js deps to dev deps * test: update snapshot tests for Spinner and InputEmbeddingDimension * chore: exclude .zed directory from biome formatting * Update @ai-sdk/openai-compatible patch hash * chore: update @kangfenmao/keyv-storage to version 0.1.3 in package.json and pnpm-lock.yaml --------- Co-authored-by: icarus <[email protected]> Co-authored-by: beyondkmp <[email protected]> Co-authored-by: kangfenmao <[email protected]>
What this PR does
Before this PR:
After this PR:
Fixes #
Why we need it and why it was done in this way
The following tradeoffs were made:
The following alternatives were considered:
Links to places where the discussion took place:
Breaking changes
Special notes for your reviewer
Checklist
Release note
Note
Standardizes project tooling on pnpm.
pnpmin workflows:auto-i18n,nightly-build,pr-ci,release,sync-to-gitcode,update-app-upgrade-configpnpm/action-setupand cache pnpm store viapnpm store path; keys now based onpnpm-lock.yamlyarncommands topnpmequivalents for install, i18n, format, lint, typecheck, test, and build stepsauto-i18ncheck to resetpnpm-lock.yaml(notyarn.lock) before diffing.husky/pre-committopnpm lint-staged; normalize.npmrcWritten by Cursor Bugbot for commit f0a653f. This will update automatically on new commits. Configure here.