chore(deps): pnpm named catalog 기반 의존성 버전 중앙 관리#84
Conversation
공유 의존성(react, typescript, rollup 빌드 도구 등)의 버전을 pnpm-workspace.yaml의 named catalog(core, types, build)에서 중앙 관리하도록 변경하여 버전 불일치를 방지하고 업데이트를 단순화한다. - pnpm-workspace.yaml에 catalogs(core/types/build) 섹션 추가 - 7개 패키지의 package.json에서 catalog: 프로토콜 적용 - CI workflow를 모든 브랜치에서 실행하도록 변경 - react-icons index 생성 스크립트의 biome 호환성 수정 (trailing newline 추가, case-insensitive 정렬) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Use the checkbox below for a quick retry:
Walkthrough이 PR은 프로젝트 전반에 걸쳐 CI/CD 워크플로우 추가, pnpm 워크스페이스 카탈로그 도입을 통한 의존성 통합, 다중 패키지의 타입 체크 스크립트 추가, 문서 웹사이트 레이아웃 재구성, 그리고 코드 스타일 정규화 등을 포함합니다. Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary of ChangesHello @ohprettyhak, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! 이 풀 리퀘스트는 pnpm의 named catalog 기능을 활용하여 프로젝트의 의존성 관리를 중앙화하고 표준화하는 것을 목표로 합니다. 이를 통해 여러 패키지 간의 의존성 버전 불일치 문제를 줄이고, 빌드 및 개발 환경의 일관성을 확보합니다. 또한, 문서 웹사이트의 콘텐츠와 구조를 개선하고, CI 워크플로우를 확장하여 전반적인 개발 효율성과 사용자 경험을 향상시켰습니다. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Changelog
Ignored Files
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Actionable comments posted: 11
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
packages/react-icons/package.json (1)
46-49: 🧹 Nitpick | 🔵 Trivial
peerDependencies와 카탈로그 버전 간 범위 차이 인지.
peerDependencies의 react/react-dom은^19.1.1이고, 카탈로그(core)의 react/react-dom은^19.2.1입니다. 현재 dev 버전이 peer 범위를 만족하므로 문제는 없지만, 향후 카탈로그 버전을 올릴 때 peer 범위도 함께 검토해 주세요.docs/website/src/components/layout/sidebar.tsx (1)
29-50: 🧹 Nitpick | 🔵 Trivial현재 모든 사이드바 항목이
type: 'page'로만 구성되어 있어null반환은 실행되지 않습니다.사이드바 상수(
docs/website/src/constants/sidebar.ts)를 확인한 결과, 6개의 모든 항목이type: 'page'로 정의되어 있습니다. 따라서 현재 코드의null반환 처리는 실제로 동작하지 않습니다. 향후 다른 타입의 항목을 추가할 계획이 없다면, 타입 가드를 제거하거나 코드 의도를 명확히 하는 주석을 추가하는 것을 고려해주세요.
🤖 Fix all issues with AI agents
In @.github/workflows/ci.yml:
- Around line 3-7: The workflow currently triggers both push: and pull_request:
for all branches which can cause duplicate runs; change the triggers so push
only runs for protected branches (e.g., replace push: branches: ['**'] with
push: branches: ['main','release'] or your primary branch name) while leaving
pull_request: branches: ['**'] to run PR checks, ensuring the
concurrency/grouping uses the same ref form; update the on: block (push:,
pull_request:, branches:) accordingly so pushes to feature branches don't fire
duplicate workflows.
In `@docs/website/src/app/globals.css`:
- Around line 46-47: Replace the longhand overflow-x and overflow-y declarations
with the shorthand overflow property: change the two lines `overflow-x: hidden;`
and `overflow-y: scroll;` to a single `overflow: hidden scroll;` so stylelint's
`declaration-block-no-redundant-longhand-properties` is satisfied and behavior
is preserved (keep this change in the same rule where `overflow-x`/`overflow-y`
appear).
In `@docs/website/src/app/layout.tsx`:
- Around line 19-23: The viewport export currently hardcodes themeColor which
will break when dark mode is enabled; update the viewport.themeColor assignment
in layout.tsx (the exported viewport object) to compute the color dynamically
instead of '#FFFFFF' — for example, read the app/theme setting (e.g.,
theme.enabled or current theme mode) or a CSS variable and return the
appropriate light/dark color string so themeColor reflects the active theme at
runtime.
In `@docs/website/src/components/layout/header.tsx`:
- Around line 20-26: The search button using the SearchIcon lacks an
accessibility label; update the button element (the one that calls
setOpenSearch(true) and renders <SearchIcon />) to include an appropriate
aria-label (e.g., "Search" or a localized equivalent) so screen readers can
announce its purpose; ensure the label is concise and descriptive and add it to
the button element that currently has onClick={() => setOpenSearch(true)}.
In `@docs/website/src/components/ui/page-navigation.tsx`:
- Around line 28-38: The twMerge call around the className in the Link rendering
(the Link that renders prevPage with ArrowIOSBackwardIcon) is unnecessary
because the class strings do not conflict; replace twMerge(...) with a plain
string or template literal for the className (and do the same for the symmetric
Next link instance), and remove the twMerge import if it becomes unused; ensure
you update the className on both the previous-link and next-link JSX (the Link
that uses prevPage.name and the corresponding nextPage.name) accordingly.
- Around line 15-21: The PageNavigation component computes currentIndex from
pathname but doesn't handle currentIndex === -1, so unmatched paths incorrectly
show a "Next" pointing to pages[0]; update PageNavigation to validate
currentIndex (from usePathname()/pages) before deriving prevPage/nextPage — if
currentIndex is -1, set prevPage and nextPage to undefined (or short-circuit
render and return null/empty navigation) so no navigation links are shown for
unknown routes; ensure references to currentIndex, prevPage, nextPage and pages
are the ones guarded.
In `@docs/website/src/components/ui/section.tsx`:
- Line 4: The empty interface declarations (e.g., SectionRootProps,
SectionTitleProps, SectionEyebrowProps, SectionDescriptionProps,
SectionContentProps, SectionActionsProps) currently just extend
ComponentProps<'section'> (or other elements) with no additions; replace each
empty interface with an equivalent type alias (e.g., type SectionRootProps =
ComponentProps<'section'>) to simplify the code, or if you intend to add fields
later, leave the interface and add a brief comment documenting that it's
intentionally left open for extension; update all references to these symbols
accordingly.
In `@ecosystem/baseframe/tsconfig.json`:
- Line 11: Type errors occur because Node types are missing for usages like
process.stdout.write, process.exit, and process.argv; fix by either restoring
"types": ["node"] in tsconfig.json or adding `@types/node` to devDependencies (and
run npm/yarn install), ensuring the compiler picks up Node definitions so tsc
--noEmit succeeds; reference tsconfig.json, `@types/node`, and the CLI usages
(ecosystem/baseframe/src/cli index references to process.stdout.write,
process.exit, process.argv) when making the change.
In `@package.json`:
- Line 10: The package.json "format" script still calls "prettier" even though
prettier was removed from devDependencies; update the "format" npm script (the
"format" entry) to use the remaining formatter (e.g., replace the prettier
invocation with the equivalent Biome command) or re-add prettier to
devDependencies; ensure the script target patterns remain correct for
TypeScript/MD files and reference the "format" script and the formatter name
(prettier or biome) when making the change.
In `@packages/react-icons/scripts/generate-index-file.mjs`:
- Around line 29-30: The sort uses localeCompare with an undefined locale which
can vary across environments; update both .sort((a, b) => a.localeCompare(b,
undefined, { sensitivity: 'base' })) occurrences in generate-index-file.mjs to
pass a fixed locale (e.g., 'en') instead of undefined (so: a.localeCompare(b,
'en', { sensitivity: 'base' })) to ensure deterministic ordering in CI and local
builds.
In `@packages/react/src/select/Select.tsx`:
- Around line 16-28: The Select component is still wrapped with React's
forwardRef; remove the forwardRef wrapper and accept ref as a normal prop on the
Select function signature (use the ref property on SelectProps or augment the
props type with ref?: Ref<HTMLSelectElement>), update the exported declaration
to export const Select = (props) => { ... } (destructure ref from props
alongside className, size, etc.), and remove the forwardRef import if no longer
used; keep behavior for size, disabled, stretch and children unchanged.
PR이 열린 상태에서 push 시 push/pull_request 이벤트가 동시에 발생하여 워크플로우가 중복 실행되는 문제를 방지한다. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
환경별 시스템 기본 locale 차이로 인한 비결정론적 정렬을 방지한다. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Code Review
이 PR은 pnpm의 named catalog 기능을 도입하여 의존성 버전을 중앙에서 관리하도록 개선하는 중요한 변경을 포함하고 있습니다. 이를 통해 여러 패키지에 걸쳐 일관된 의존성 버전을 유지하고 관리를 용이하게 할 수 있습니다. 또한 문서 웹사이트의 대대적인 리팩토링, react-icons 생성 스크립트 개선, Biome linter/formatter 적용 등 코드 품질과 개발 경험을 향상시키는 여러 유용한 변경사항들이 포함되어 있습니다. 전반적으로 훌륭한 개선 작업이라고 생각합니다. 한 가지 작은 문제를 발견하여 package.json 파일에 코멘트를 남겼습니다. 이 부분을 수정하면 더 완벽한 PR이 될 것입니다.
I am having trouble creating individual review comments. Click here to see my feedback.
package.json (10)
format 스크립트가 prettier를 사용하고 있지만, devDependencies에서 prettier가 제거되어 스크립트 실행 시 오류가 발생합니다. 프로젝트가 Biome으로 마이그레이션되고 있는 것으로 보이므로, 이 스크립트를 Biome을 사용하도록 수정해야 합니다.
예를 들어, biome format --write .로 변경할 수 있습니다.
"format": "biome format --write ."biome을 단독 포매터/린터로 사용하므로 불필요한 prettier/eslint 잔여 코드를 정리: - format 스크립트를 biome format으로 변경 - .prettierrc 설정 파일 삭제 - baseframe .gitignore에서 .eslintcache 항목 제거 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CI 클린 환경에서 @cocso-ui/react의 타입체크가 @cocso-ui/react-icons의 dist(타입 선언 파일)를 찾지 못하는 문제 해결. check-types의 dependsOn을 ^check-types에서 ^build로 변경하여 의존 패키지가 먼저 빌드되도록 보장. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CI 환경에서 .source 디렉토리가 없어 typecheck가 실패하는 문제 수정. fumadocs-mdx CLI를 check-types 스크립트 앞에 실행하여 생성된 타입을 보장. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 검색 버튼에 aria-label 추가 - currentIndex가 -1일 때 잘못된 페이지 참조 방지 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Summary
pnpm-workspace.yaml에 named catalogs(core,types,build) 정의하여 공유 의존성 버전을 중앙 관리package.json에서catalog:<name>프로토콜 적용 (react, typescript, rollup 빌드 도구 등)branches: ['**'])react-iconsindex 생성 스크립트의 biome 호환성 수정 (trailing newline, case-insensitive 정렬)Catalog 구성
coretypesbuildTest plan
pnpm install— lockfile 정상 갱신pnpm build— 전체 빌드 성공 (5/5 tasks)pnpm check— biome lint/format 통과 (178 files, no errors)🤖 Generated with Claude Code
Summary by CodeRabbit
릴리스 노트
새로운 기능
문서화
스타일
기타