chore(deps): TypeScript 6.0 + 빌드 툴체인 업데이트#128
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Summary of ChangesHello, 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! 이 풀 리퀘스트는 프로젝트의 전반적인 빌드 툴체인과 의존성을 현대화하는 데 중점을 두고 있습니다. TypeScript 6.0으로의 업그레이드와 함께, 기존 tsup 기반의 빌드 설정을 tsdown으로 전환하여 빌드 프로세스를 최적화했습니다. 또한, 프로젝트 유지보수를 위한 정리 스크립트 추가 및 Node.js 버전 요구사항 상향 조정이 포함되어 있습니다. Highlights
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 the 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 counterproductive. 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. Footnotes
|
Code Review: TypeScript 6.0 + 빌드 툴체인 업데이트개요이 PR은 세 가지 주요 변경을 묶어서 처리합니다:
✅ 잘 된 부분
|
There was a problem hiding this comment.
Code Review
이번 풀 리퀘스트에서는 TypeScript 버전을 6.0.3으로 업그레이드하고, 일부 패키지의 빌드 도구를 tsup에서 tsdown으로 전환하여 빌드 설정을 최적화했습니다. 또한 Node.js 엔진 요구사항을 24 이상으로 상향하고 루트 package.json에 clean 스크립트를 추가했습니다. 이에 대해 리뷰어는 clean 스크립트의 크로스 플랫폼 호환성 문제(Unix 명령어 사용), 빌드 도구 전환 후 @design-system/ui 패키지의 루트 main 및 types 필드가 업데이트되지 않은 문제, 그리고 @package/bundler에서 target: 'node24' 옵션이 누락되어 불필요한 다운레벨 컴파일이 발생할 수 있는 문제를 지적하며 개선을 권장했습니다.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| "clean:dist": "find . -name node_modules -prune -o -type d '(' -name dist -o -name .next -o -name out -o -name .turbo ')' -prune -exec rm -rf {} +", | ||
| "clean:modules": "find . -name node_modules -type d -prune -exec rm -rf {} +", |
There was a problem hiding this comment.
| "types": "./dist/index.d.mts", | ||
| "import": "./dist/index.mjs" |
There was a problem hiding this comment.
빌드 도구를 tsdown으로 전환하면서 출력 파일 확장자가 .mjs 및 .d.mts로 변경되었습니다. publishConfig.exports는 이에 맞춰 잘 업데이트되었으나, package.json 루트 레벨에 정의된 types 및 main 필드(6~7행)는 여전히 기존의 ./dist/index.d.ts 및 ./dist/index.js를 가리키고 있습니다.
일부 exports 필드를 완벽히 지원하지 않는 레거시 도구나 IDE 환경에서 루트 레벨의 main/types를 참조할 때 파일 찾기 오류가 발생할 수 있으므로, 이 필드들도 새로운 확장자(.mjs, .d.mts)에 맞게 업데이트하거나 불필요하다면 제거하는 것을 권장합니다.
| entry: ['src/index.ts', 'src/cli.ts'], | ||
| format: ['esm', 'cjs'], | ||
| target: 'node24', | ||
| platform: 'node', |
There was a problem hiding this comment.
Code Review: TypeScript 6.0 + Build Toolchain Update전체적으로 잘 정리된 PR입니다. TypeScript 6.0 업그레이드에 따른 breaking change들을 체계적으로 처리했고, 블로그 포스트로 경위까지 문서화한 점이 좋습니다. ✅ 잘 된 점
|
Code Review: chore(deps): TypeScript 6.0 + 빌드 툴체인 업데이트OverviewThis PR upgrades TypeScript from 5.8.3 to 6.0.3 across the monorepo by consolidating the named Bug / Breaking Issue
"peerDependencies": {
"@pandacss/dev": "catalog:",
"react": "catalog:react19",
"react-dom": "catalog:react19"
}The Recommendation — use concrete semver ranges: "peerDependencies": {
"@pandacss/dev": ">=1.0.0",
"react": ">=19.0.0",
"react-dom": ">=19.0.0"
}Also: Suggestions1. Stale 2. Confirm DTS artifact size after tsdown migration 3. Generated files committed to the repo 4. "clean:dist": "find . -name node_modules -prune -o -type d '(' -name dist ... ')' -prune -exec rm -rf {} +"The parenthesis quoting relies on POSIX What's Done WellCI consolidation — merging tsup → tsdown migration — well executed. TS6 breaking changes handled systematically:
Blog post ( SummaryOne functional bug (catalog refs in |
…Node 버전 동기화 - @design-system/ui: 최상위 main/types가 tsup 시절 .js/.d.ts를 가리켜 dangling 참조였음. tsdown은 .mjs/.d.mts만 산출하므로 publishConfig.exports와 일치시킴 - CLAUDE.md: engines.node >=24 반영 (Node >=22 → >=24), pnpm 10.10.0 → 11.6.0 동기화 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
PR Review: chore(deps): TypeScript 6.0 + 빌드 툴체인 업데이트Overview이 PR은 모노레포의 TypeScript를 5.8.3 → 6.0.3으로 업그레이드하면서 연쇄된 변경들을 담고 있습니다. TS6 breaking change 대응(baseUrl deprecation, rootDir 요구), tsup → tsdown 전환, pnpm 11.6.0 + Node.js 24 업그레이드, CI 최적화까지 잘 묶여 있습니다. Positives
Issues & Suggestions1.
|
baseUrl deprecation(TS5101)·types 기본값 []·rootDir 요구(TS5011)를 릴리스 노트·이슈를 넘어 실제 microsoft/TypeScript PR diff(#62509·#63054·#62418)까지 추적하는 탐구 서사로 전면 재작성. 보너스로 유지보수가 멈춘 tsup을 tsdown으로 전환한 과정까지. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
scripts/build-content.ts가 prebuild/predev에서 재생성하는 public/ 산출물을 .gitignore에 추가하고 추적에서 제거. 빌드 시점에 항상 새로 생성되므로 버전 관리 불필요. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Code Review: TypeScript 6.0 + 빌드 툴체인 업데이트전반적으로 잘 정리된 메이저 버전 마이그레이션입니다. breaking change 3종을 각각 올바르게 처리했고, tsup → tsdown 전환 동기도 명확합니다. Overview
Issues🔴
|
- named catalog(react19) → 기본 catalog로 react·react-dom·@types 통합 (stable 19.2.x) - apps/{react,blog-web,next.js}·@design-system/ui의 catalog:react19 → catalog: 전환 - @design-system/ui: 빌드 도구(tsdown·typescript)를 dependencies → devDependencies (동일 파일이라 함께 반영) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- @package/bundler: tsdown.config에 target: 'node24' 명시 (platform과 별개 축) - @package/core: 루트(pnpm@11.6.0)와 어긋난 packageManager(pnpm@10.4.1) 필드 제거 - blog: tsup→tsdown 보너스에 함정(platform≠target, 빌드도구 devDeps) + 체크리스트 보강 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Code Review: chore(deps): TypeScript 6.0 + 빌드 툴체인 업데이트전체적으로 잘 정리된 메이저 업그레이드 PR입니다. 변경 이유와 흐름이 명확하며, 특히 새 블로그 포스트 초안이 변경 맥락을 아주 잘 설명하고 있습니다. Overview이 PR이 수행하는 작업:
🐛 Bug / 잠재적 문제1.
|
| 항목 | 상태 |
|---|---|
| TypeScript 6 breaking change 대응 | ✅ 정확 |
| tsdown 마이그레이션 | ✅ 정확, 부수 작업 완비 |
peerDependencies에 catalog: 사용 |
|
| 생성 파일 gitignore | ✅ 올바른 정리 |
| CI 최적화 | ✅ 효과적 |
| React canary → stable | ✅ |
| 블로그 포스트 (draft) | ✅ 의도된 상태 |
peerDependencies의 catalog: 이슈가 가장 주목할 점입니다. 현재 private: true이므로 즉각적인 문제는 없지만, 관례상 semver range를 쓰는 편이 낫습니다.
🤖 Generated with Claude Code
Code Review: chore(deps): TypeScript 6.0 + 빌드 툴체인 업데이트전반적으로 잘 정리된 PR입니다. TS 6.0의 세 가지 breaking change를 체계적으로 해결하고, tsup → tsdown 마이그레이션 및 카탈로그 구조 개편까지 한꺼번에 정리한 점이 인상적입니다. Overview
TS 6.0 Breaking Changes 대응 — ✅ 올바름
잘 된 점
지적 사항🔴 Minor Issue —
|
Code Review: PR #128 —
|
| Component | Before | After |
|---|---|---|
| TypeScript | 5.8.3 (catalog:typescript5) |
6.0.3 (default catalog:) |
| React | 19.3.0-canary-a757cb76 (catalog:react19) |
19.2.7 (default catalog:) |
| pnpm | 10.10.0 |
11.6.0 |
| Node.js minimum | >=22 |
>=24 |
| dts bundler | tsup 8.4.0 |
tsdown 0.22.2 |
| Turbo | ^2.5.3 |
^2.9.18 |
Three TypeScript 6.0 breaking changes were addressed:
baseUrldeprecated (TS5101) → removed fromapps/react/tsconfig.app.jsontypesdefaults to[]→ no action needed (already explicit)rootDirrequired whenoutDiris set → added topackages/@package/sample-lib/tsconfig.json
✅ Positive Highlights
Catalog consolidation — removing the named react19: / typescript5: catalog namespaces and folding them into the default catalog: is a clean simplification. Fewer moving parts, single place to bump versions.
Generated artifacts removed from git — deleting rss.xml, sitemap.xml, search-index.json, llms-full.txt from the repo (~1500 lines removed) is the right call. These are regenerated on every prebuild and had no business being tracked.
tsup → tsdown migration is complete — both @design-system/ui and @package/bundler are migrated. The output extension changes (.mjs / .d.mts) and the package.json exports maps are updated consistently. The root cause (tsup injecting baseUrl: '.' into dts builds, which is a hard error in TS6) is correctly identified in the blog post.
CI consolidation — replacing three separate pnpm lint / pnpm check-types / pnpm test steps with a single pnpm turbo run lint check-types test is genuinely better: the shared ^build dependency runs once instead of being re-evaluated by three independent Turbo invocations.
concurrently moved to devDependencies — correct fix; it was incorrectly in dependencies (runtime) before.
clean scripts — the find-based clean:dist / clean:modules scripts using -name node_modules -prune to avoid recursing into node_modules/dist/... are implemented correctly.
⚠️ Concerns / Observations
peerDependencies using catalog: syntax
In packages/@design-system/ui/package.json:
"peerDependencies": {
"@pandacss/dev": "catalog:",
"react": "catalog:",
"react-dom": "catalog:"
}catalog: is a pnpm workspace feature and is not understood by consumers outside the workspace or by standard tooling. peerDependencies should declare semver ranges (e.g., "react": ">=19"). Since this package is "private": true it works in practice within the monorepo, but it's a non-standard pattern. Consider using actual semver ranges here.
CI: single Turbo step reduces per-task failure visibility
With three separate steps, GitHub Actions showed exactly which step (lint / type-check / test) failed in the step name. With a single step, all failures surface in the same log. Turbo's per-task output grouping partially mitigates this, but consider whether --log-prefix is configured in your turbo.json to keep failures easy to locate.
Node >=24 engine requirement — verify deploy workflow
The root engines field now requires >=24. Confirm that .github/workflows/deploy-blog.yml specifies node-version: '24' (this file was not changed in the PR diff). A Node 22 runner would fail at pnpm install --frozen-lockfile with an engine constraint error.
React canary → stable: potential API drift
19.3.0-canary-a757cb76 may have included features not yet in stable 19.2.7. For a lab repo this is low-risk (no app logic changed), but worth noting in case any code path depended on a canary-only API.
tsdown 0.22.2 exactly pinned (no caret)
Consistent with how tsup was pinned before, so likely intentional. Just confirming this is a deliberate policy rather than an oversight.
Blog Post
apps/blog/posts/typescript/typescript-6-업그레이드-삽질기.md is added as status: 'draft' — correct, it won't appear in production builds. The content is technically strong: it explains why each TS6 breaking change was made (with actual TypeScript compiler PR diffs cited), and documents the tsup discovery root cause. One minor nit: the opening paragraph uses raw <strong> HTML tags while the rest of the post uses markdown syntax — inconsistent but not blocking.
Summary
Well-executed, comprehensive toolchain upgrade. The main thing to follow up on: (1) verify deploy-blog.yml uses Node 24, and (2) consider replacing catalog: syntax in peerDependencies with actual semver ranges.
Reviewed by Claude Code
No description provided.