Skip to content

feat: eslint 설정 및 중복 import 방지 규칙 추가#64

Merged
noahluftyang merged 4 commits intomainfrom
feat/eslint
Jan 1, 2025
Merged

feat: eslint 설정 및 중복 import 방지 규칙 추가#64
noahluftyang merged 4 commits intomainfrom
feat/eslint

Conversation

@noahluftyang
Copy link
Copy Markdown
Collaborator

@noahluftyang noahluftyang commented Jan 1, 2025

변경사항

  • eslint를 추가로 설정
  • no-duplicate-imports 규칙 추가
  • biome을 모노레포 공통 버전을 사용하도록 변경

시각자료

체크리스트

  • 기능 명세를 작성하였나요?
  • 테스트 코드를 작성하였나요?

추가 논의사항

Summary by CodeRabbit

  • 새로운 기능

    • 없음
  • 버그 수정

    • 없음
  • 리팩토링

    • 린팅 도구 및 구성 변경
    • ESLint와 Biome 린팅 스크립트 분리
    • 패키지 내보내기(exports) 구성 업데이트
  • 기타

    • @biomejs/biome 의존성 제거
    • VSCode 확장 및 설정 업데이트

@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Jan 1, 2025

⚠️ No Changeset found

Latest commit: 9e4210c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Jan 1, 2025

워크스루

이 변경 사항은 프로젝트의 린팅 및 코드 품질 도구를 재구성하는 것에 중점을 둡니다. Biome 린터를 제거하고 ESLint를 도입하면서, 프로젝트의 여러 패키지와 구성 파일에 걸쳐 일관된 변경이 이루어졌습니다. 주요 변경 사항은 스크립트 업데이트, 의존성 제거, VSCode 확장 및 설정 조정을 포함합니다.

변경 사항

파일/디렉토리 변경 요약
.github/workflows/ci.yaml CI 워크플로우의 린트 명령 업데이트
.vscode/extensions.json ESLint 확장 추가
.vscode/settings.json ESLint 옵션 구성 추가
package.json Biome 의존성 업데이트, ESLint 의존성 추가
패키지 package.json 파일들 린트 스크립트 분리, Biome 의존성 제거, 내보내기 구성 추가
eslint.config.ts 새로운 ESLint 구성 파일 추가

시퀀스 다이어그램

sequenceDiagram
    participant Dev as 개발자
    participant Lint as ESLint
    participant Biome as Biome Linter
    
    Dev->>Lint: 코드 린팅 요청
    Lint->>Lint: TypeScript 구성 확인
    Lint->>Dev: 린팅 결과 반환
    
    Dev->>Biome: 코드 린팅 요청
    Biome->>Dev: 린팅 결과 반환
Loading

관련 PR 목록

  • fix: css module 번들 이슈 수정 #63: 이 PR의 변경 사항은 CSS 모듈에 대한 린팅 프로세스 및 구성을 업데이트하며, 이는 CI 워크플로우의 린팅 명령 수정과 관련이 있습니다. 두 PR 모두 린팅 기능 향상 및 스타일 적용 문제를 다루고 있습니다.

제안된 리뷰어

  • bae-sh
  • heeji289
  • synuns
  • hy57in
  • kimdaeyeobbb
  • developerjhp

🐰 린트의 춤, 코드의 노래
ESLint와 Biome이 손을 잡고
깨끗한 코드를 만드는 여정
개발의 즐거움, 토끼처럼 뛰어다녀!
🌈✨


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 62d90e7 and 9e4210c.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (3)
  • package.json (2 hunks)
  • packages/badge/package.json (1 hunks)
  • packages/typography/package.json (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • package.json
  • packages/typography/package.json
  • packages/badge/package.json

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
packages/Input/package.json (1)

17-18: 린트 전략 재검토 제안

현재 구현된 린트 설정에 대해 다음과 같은 개선을 제안드립니다:

  1. Biome과 ESLint를 함께 사용하는 것에 대한 명확한 목적과 이점이 필요합니다.
  2. 두 도구의 규칙이 충돌할 수 있으므로, 각 도구의 역할을 명확히 구분해야 합니다.
  3. 모노레포 전체의 일관성을 위해 루트 레벨에서 통합 린트 설정을 관리하는 것이 좋습니다.

이 변경사항들이 프로젝트의 코드 품질 향상에 어떻게 기여하는지 문서화해주시면 좋겠습니다.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between dad7ce7 and 7cccc48.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (18)
  • .github/workflows/ci.yaml (1 hunks)
  • .templates/component/package.json (1 hunks)
  • .vscode/extensions.json (1 hunks)
  • .vscode/settings.json (1 hunks)
  • eslint.config.ts (1 hunks)
  • package.json (2 hunks)
  • packages/Input/package.json (1 hunks)
  • packages/badge/package.json (1 hunks)
  • packages/card/package.json (1 hunks)
  • packages/divider/package.json (1 hunks)
  • packages/radio-group/package.json (1 hunks)
  • packages/radio-group/src/RadioGroup.tsx (1 hunks)
  • packages/skeleton/package.json (1 hunks)
  • packages/switch/package.json (1 hunks)
  • packages/tokens/package.json (1 hunks)
  • packages/tooltip/package.json (1 hunks)
  • packages/typography/package.json (1 hunks)
  • pnpm-workspace.yaml (0 hunks)
💤 Files with no reviewable changes (1)
  • pnpm-workspace.yaml
✅ Files skipped from review due to trivial changes (3)
  • .vscode/settings.json
  • packages/radio-group/src/RadioGroup.tsx
  • .vscode/extensions.json
🔇 Additional comments (20)
eslint.config.ts (3)

1-2: 타입스크립트 파서 설정 확인 권장
이 설정에서는 @typescript-eslint/parser를 사용하여 TypeScript 코드를 파싱하고 있습니다. 해당 파서 버전과 typescript 버전을 서로 호환되도록 맞춰 두었는지 확인해 주시기 바랍니다.


4-10: ESLint 설정 구조 적절
export default 배열 내에 파일 패턴(files)과 무시 디렉터리(ignores)가 명확히 나누어져 있어 이해하기 쉽고 유지보수가 간편해 보입니다. 별도 문제가 없으며 설정이 적절하게 작성되었습니다.


13-15: 중복 import 방지 규칙 추가
중복 import를 에러로 처리하는 규칙이 추가되었습니다. 규칙의 중요도가 높으므로 적극 활용해 코드 품질 유지에 도움이 될 것으로 보입니다.

.github/workflows/ci.yaml (1)

27-27: ESLint 스크립트 패턴 적용 확인
pnpm --filter="...[origin/${{ github.base_ref }}]" "/lint:*/" 형태의 스크립트 호출로 lint 작업을 수행하게 되었습니다. 새로 분리된 lint:biome, lint:eslint 스크립트를 모두 안전하게 호출해주는지 검증이 필요합니다.

package.json (3)

10-10: @biomejs/biome 버전 명시
기존 catalog 의존성에서 버전을 명시한 형태로 변경하였습니다. 프로젝트 전반에서 동일 버전을 사용하도록 관리해 주시기 바랍니다.


21-21: @typescript-eslint/parser 추가
TypeScript 코드를 ESLint가 이해하도록 파서를 추가한 것은 좋은 선택입니다. 빌드 도구나 다른 ESLint 플러그인들과의 호환성도 꾸준히 확인해 주세요.


24-24: eslint 의존성 추가
ESLint를 직접 설치하고 버전을 명시함으로써, 팀 내에서 일관성 있는 린팅 환경을 구성할 수 있습니다. 주기적으로 최신 버전을 점검해 보시기 바랍니다.

packages/tokens/package.json (2)

12-12: files 설정 변경
"dist"만 포함하는 배열 형태의 파일 설정으로, 패키지 배포 시 필요 파일만 포함하도록 관리하고 있습니다. 패키지를 배포할 때, 의도하지 않은 파일이 포함되지 않는지 주기적으로 확인이 필요합니다.


17-18: lint 스크립트 분리 적용
lint:biomelint:eslint로 분리하여 사용하는 방식은 다른 패키지와의 일관성을 확보해주며, 여러 도구를 병행할 때 관리가 수월해집니다. 필요 시 특정 규칙을 어느 스크립트에 둘지 팀 내 컨벤션을 정해두면 좋겠습니다.

.templates/component/package.json (1)

17-18: ESLint의 unstable_ts_config 플래그 검증 필요

--flag unstable_ts_config 옵션이 추가되었습니다. 이 실험적 기능의 안정성과 영향도를 검토해주세요.

✅ Verification successful

unstable_ts_config 플래그 사용이 일관되게 적용되어 있습니다

프로젝트 전반에 걸쳐 다음과 같은 사항이 확인되었습니다:

  • 모든 컴포넌트 패키지에서 동일한 ESLint 설정(--flag unstable_ts_config)을 사용 중
  • ESLint v9.17.0 및 TypeScript ESLint 파서 v8.19.0 버전을 사용하여 최신 버전 채택
  • 이 설정이 템플릿에 추가됨으로써 새로운 컴포넌트에도 일관된 린팅 규칙 적용 가능

이는 프로젝트 전체에 걸쳐 일관된 TypeScript 린팅 구성을 유지하기 위한 의도적인 설정으로 보입니다.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# ESLint 설정 파일에서 관련 설정 확인
rg -l "unstable_ts_config" -g "*.{js,json,yaml,yml}"

Length of output: 351


Script:

#!/bin/bash
# 패키지들의 package.json에서 unstable_ts_config 사용 컨텍스트 확인
rg "unstable_ts_config" -g "package.json" -C 2

# ESLint 설정 파일들 검색
fd ".eslintrc" --exec cat {}

Length of output: 3397


Script:

#!/bin/bash
# 루트 디렉토리의 ESLint 설정 확인
cat .eslintrc* 2>/dev/null || echo "루트 디렉토리에 .eslintrc 파일이 없음"

# package.json에서 ESLint 관련 의존성 확인
rg '"eslint":|"@typescript-eslint' package.json -A 1

Length of output: 266

packages/radio-group/package.json (1)

12-12: 패키지 구성의 일관성 확인 필요

템플릿 컴포넌트와 동일한 변경사항이 적용되었습니다. 모노레포의 다른 패키지들도 동일한 구조를 따르는지 확인이 필요합니다.

Also applies to: 17-18

✅ Verification successful

Let me verify the files array configuration across packages.


패키지 구성이 일관되게 적용되어 있음을 확인했습니다

모든 패키지의 package.json 파일에서 files 배열이 ["dist"]로 동일하게 설정되어 있고, 린트 스크립트 구성도 일관성 있게 적용되어 있습니다. 변경사항이 모노레포 전체의 표준을 잘 따르고 있습니다.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 모든 package.json 파일에서 lint 스크립트 구성 확인
fd package.json | xargs jq -r '.scripts | select(."lint:biome" != null and ."lint:eslint" != null) | path(.[])'

Length of output: 1560


Script:

#!/bin/bash
# Check "files" field in all package.json files
fd package.json | xargs jq -r '.files | select(. != null) | @json'

Length of output: 167

packages/divider/package.json (1)

17-18: 의존성 관리 전략 검토 필요

@biomejs/biome 의존성이 제거되었지만, 프로젝트 루트 레벨에서 관리되는지 확인이 필요합니다. 또한 clsx와 같은 외부 의존성들의 포매팅이 새로운 린트 설정과 호환되는지 검증해주세요.

✅ Verification successful

의존성 및 린트 설정이 적절히 구성되어 있습니다

프로젝트 루트 레벨에서 @biomejs/biome이 v1.9.4로 관리되고 있으며, 전역 biome.json 설정 파일이 적절히 구성되어 있습니다. clsx와 같은 외부 의존성에 대한 특별한 린트 규칙이 없으므로 기본 JavaScript 포매팅 규칙이 적용됩니다. 현재 설정으로도 코드 일관성이 유지될 것으로 판단됩니다.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 루트 package.json에서 biome 의존성 확인
jq -r '.dependencies."@biomejs/biome" // .devDependencies."@biomejs/biome"' package.json

# biome 설정 파일 위치 확인
fd -g 'biome.json'

Length of output: 127


Script:

#!/bin/bash
# biome 설정 파일 내용 확인
cat biome.json

# clsx 관련 린트 규칙 확인
rg -A 5 "clsx" biome.json

Length of output: 560

packages/skeleton/package.json (1)

17-18: ⚠️ Potential issue

린트 스크립트 설정 검토 필요

새로운 린트 명령에 대해 다음 사항들을 확인해주세요:

  1. unstable_ts_config 플래그는 불안정한 기능을 사용하고 있음을 나타냅니다. 안정적인 대안을 고려해보시기 바랍니다.
  2. ESLint 관련 의존성(eslint, @typescript-eslint/parser, @typescript-eslint/eslint-plugin)이 devDependencies에 누락되어 있습니다.
packages/Input/package.json (1)

Line range hint 1-1: 모노레포 전체 설정 일관성 검증 필요

다음 스크립트를 실행하여 모든 패키지의 린트 설정 일관성을 확인해주세요:

✅ Verification successful

Let me gather more information about the linting configuration across the monorepo.


린트 설정이 모노레포 전체에서 일관되게 적용되어 있음을 확인했습니다

모든 패키지에서 다음과 같은 일관된 린트 설정이 확인되었습니다:

  • 모든 패키지에서 lint:biomelint:eslint 스크립트가 동일하게 설정됨
  • 루트 레벨에 biome.json 설정 파일이 존재하여 중앙 집중식 관리가 이루어지고 있음
  • ESLint 관련 설정은 루트 package.json의 devDependencies에서 관리되고 있음
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: 모든 패키지의 린트 설정 일관성 검증

# 모든 package.json 파일 검색
echo "패키지별 린트 스크립트 설정 확인:"
fd package.json | xargs jq -r 'select(.scripts != null) | .scripts | select(.["lint:biome"] != null or .["lint:eslint"] != null) | path(.)'

# ESLint 의존성 확인
echo "\nESLint 의존성 현황:"
fd package.json | xargs jq -r 'select(.devDependencies != null) | .devDependencies | with_entries(select(.key | contains("eslint"))) | path(.)'

Length of output: 445


Script:

#!/bin/bash
# Check all package.json files for any linting-related configurations and dependencies
echo "=== Package.json 파일 내용 확인 ==="
fd package.json -x cat {} | jq -r '{ name: .name, scripts: .scripts, devDependencies: .devDependencies }'

# Check for any biome.json configuration files
echo -e "\n=== Biome 설정 파일 확인 ==="
fd biome.json

# Check for any eslint configuration files
echo -e "\n=== ESLint 설정 파일 확인 ==="
fd -e .eslintrc.js -e .eslintrc.json -e .eslintrc

Length of output: 10866

packages/badge/package.json (1)

17-18: 린트 스크립트 분리 및 ESLint 설정 검토 필요

새로운 린트 스크립트가 추가되었습니다:

  • lint:biome: Biome 린터 실행
  • lint:eslint: ESLint 실행 (불안정 TypeScript 설정 플래그 사용)

--flag unstable_ts_config 플래그는 실험적인 기능을 사용하는 것으로 보입니다. 프로덕션 환경에서 안정적으로 사용할 수 있는지 확인이 필요합니다.

✅ Verification successful

unstable_ts_config 플래그 사용이 모든 패키지에서 일관되게 적용됨

검증 결과:

  • 모든 패키지의 lint:eslint 스크립트에서 동일한 --flag unstable_ts_config 플래그를 사용하고 있습니다
  • 이는 프로젝트 전반에 걸쳐 일관된 린팅 구성을 유지하기 위한 의도적인 설정으로 보입니다
  • 다른 패키지들(typography, tooltip, switch 등)에서도 동일한 설정을 사용 중이므로, 이 설정은 이미 프로젝트에서 검증되었다고 판단됩니다

린트 스크립트 분리 작업도 프로젝트의 일관성을 유지하면서 올바르게 구현되었습니다.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# ESLint 버전 및 unstable_ts_config 플래그 관련 문서 확인
pnpm exec eslint --help | grep "unstable_ts_config"

# 프로젝트의 ESLint 설정 파일 검색
fd -t f -e json -e js -e cjs -e yaml -e yml . | grep -i "eslint"

Length of output: 116


Script:

#!/bin/bash
# Check ESLint configuration files
fd -t f ".eslintrc" -e json -e js -e cjs -e yaml -e yml

# Check package.json files for ESLint dependencies and scripts
fd "package.json" --exec grep -l "eslint"

# Search for ESLint configuration in package.json files
fd "package.json" --exec jq -r 'select(.eslintConfig != null) | .eslintConfig'

# Check if unstable_ts_config is used in other scripts
fd "package.json" --exec grep -l "unstable_ts_config"

Length of output: 879


Script:

#!/bin/bash
# Check root ESLint configuration
cat .eslintrc* 2>/dev/null || echo "No root ESLint config found"

# Check the content of one package's ESLint script to understand the pattern
cat packages/typography/package.json | jq -r '.scripts | select(."lint:eslint" != null) | ."lint:eslint"'

# Check if there's any documentation about ESLint configuration
fd "README|CONTRIBUTING" -e md -d 2 --exec grep -l "eslint"

Length of output: 284

packages/typography/package.json (1)

17-18: 린트 설정의 일관성 확인 필요

타이포그래피 패키지에도 동일한 린트 스크립트가 추가되었습니다. 모노레포 전체의 일관성 있는 린트 전략을 위해 다음 사항들을 확인해주세요:

  1. Biome과 ESLint의 규칙이 서로 충돌하지 않는지
  2. 두 린터의 역할 분담이 명확한지
  3. CI/CD 파이프라인에서 두 린터가 모두 실행되는지
✅ Verification successful

The previous results show that all 10 packages have consistent lint scripts, but let's verify the actual configurations and CI setup to provide a more complete response.


린트 설정이 일관되게 적용되어 있음을 확인했습니다

모든 패키지에서 다음 사항들이 확인되었습니다:

  • 10개의 모든 패키지에서 lint:biomelint:eslint 스크립트가 동일하게 구성되어 있습니다.
  • Biome 설정이 루트 레벨에서 공유되어 일관된 규칙을 적용하고 있습니다:
    • 포맷팅과 import 정리 기능이 활성화됨
    • 접근성(a11y)과 타입 관련 규칙이 경고 수준으로 설정됨
    • dist 폴더가 린트 대상에서 제외됨

린트 설정이 모노레포 전체에서 일관되게 구성되어 있어 우려했던 문제는 없는 것으로 판단됩니다.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 모든 패키지의 린트 스크립트 일관성 확인
fd package.json -x jq -r '.scripts | select(."lint:biome" != null or ."lint:eslint" != null) | keys[]' {} \; | sort | uniq -c

# CI 설정에서 린트 명령어 확인
fd -t f -e yml -e yaml . | grep -l "workflow" | xargs cat | grep -A 5 "lint"

Length of output: 351


Script:

#!/bin/bash
# Check Biome and ESLint configurations
fd biome.json -x cat {} \;
fd .eslintrc -x cat {} \;

# Check CI workflow files more specifically
fd -t f -e yml -e yaml . -d 2 | grep -l "workflow" | xargs cat

Length of output: 643

packages/card/package.json (1)

17-18: 워크스페이스 레벨 Biome 설정 확인 필요

각 패키지에서 @biomejs/biome 의존성이 제거되고 린트 스크립트가 변경되었습니다. 이와 관련하여 다음 사항들을 확인해주세요:

  1. 워크스페이스 루트에 Biome 설정이 제대로 구성되어 있는지
  2. 모든 패키지가 동일한 Biome 버전을 사용하는지
  3. Biome 설정이 각 패키지의 특성을 반영할 수 있는지
✅ Verification successful

Biome 설정이 적절히 구성되어 있음을 확인했습니다

워크스페이스 레벨에서 Biome이 올바르게 구성되어 있습니다:

  • 루트의 biome.json에 모든 패키지에 적용될 공통 설정이 정의되어 있습니다
  • 워크스페이스에 @biomejs/biome@^1.9.4 의존성이 정확히 지정되어 있습니다
  • 포맷터와 린터가 모두 활성화되어 있으며, 접근성과 타입 안전성 관련 규칙도 포함되어 있습니다
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 워크스페이스 루트의 Biome 설정 확인
fd -t f "biome.json" -x cat {}

# 워크스페이스의 Biome 의존성 확인
fd package.json -x jq -r '.dependencies["@biomejs/biome"] // .devDependencies["@biomejs/biome"] // empty' {}

Length of output: 670

packages/tooltip/package.json (3)

18-18: 불안정한 ESLint 플래그 사용에 대한 주의

--flag unstable_ts_config 플래그는 불안정한 기능을 활성화하므로 프로덕션 환경에서 예기치 않은 문제가 발생할 수 있습니다. 안정화된 버전이 출시되면 이 플래그를 제거하는 것을 고려해주세요.


Line range hint 53-67: exports 설정이 올바르게 구성되었습니다

ESM과 CJS 모듈 형식 모두에 대해 타입 정의와 기본 내보내기가 적절하게 구성되어 있습니다. Dual Package Hazard를 방지하기 위한 좋은 접근 방식입니다.


17-17: Biome 의존성 확인 필요

biome lint 명령어는 존재하지만 @biomejs/biome 의존성이 제거되었습니다. 워크스페이스 레벨에서 관리되는지 확인이 필요합니다.

✅ Verification successful

Biome 의존성 문제 없음 - 워크스페이스 레벨에서 관리되고 있음

루트 package.json에서 @biomejs/biome 의존성이 버전 ^1.9.4로 정의되어 있고, 루트 디렉토리에 biome.json 설정 파일도 존재하므로 워크스페이스 레벨에서 정상적으로 관리되고 있음을 확인했습니다.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify Biome dependency at workspace level

# Check if biome is defined in root package.json
jq '.dependencies["@biomejs/biome"] // .devDependencies["@biomejs/biome"]' package.json

# Check if biome config exists at root
fd -t f 'biome.json|.biome'

Length of output: 139

@noahluftyang noahluftyang enabled auto-merge (squash) January 1, 2025 09:47
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
packages/card/package.json (1)

17-18: 린트 명령어 실행 순서 정의 필요

두 개의 린터를 사용할 때는 실행 순서와 각각의 역할이 명확해야 합니다. 복합 명령어를 추가하는 것을 추천드립니다.

다음과 같이 복합 린트 명령어를 추가하는 것을 고려해보세요:

  "scripts": {
    "lint:biome": "pnpm exec biome lint",
    "lint:eslint": "pnpm exec eslint --flag unstable_ts_config",
+   "lint": "pnpm lint:biome && pnpm lint:eslint"
  }
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7cccc48 and 62d90e7.

📒 Files selected for processing (11)
  • .templates/component/package.json (1 hunks)
  • packages/Input/package.json (1 hunks)
  • packages/badge/package.json (1 hunks)
  • packages/card/package.json (1 hunks)
  • packages/divider/package.json (1 hunks)
  • packages/radio-group/package.json (1 hunks)
  • packages/skeleton/package.json (1 hunks)
  • packages/switch/package.json (1 hunks)
  • packages/tokens/package.json (1 hunks)
  • packages/tooltip/package.json (1 hunks)
  • packages/typography/package.json (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (9)
  • packages/typography/package.json
  • packages/skeleton/package.json
  • packages/radio-group/package.json
  • packages/divider/package.json
  • packages/switch/package.json
  • packages/Input/package.json
  • packages/tooltip/package.json
  • packages/tokens/package.json
  • packages/badge/package.json
🔇 Additional comments (3)
.templates/component/package.json (2)

Line range hint 1-67: 린트 설정 문서화 필요

이전 리뷰에서 지적된 문제가 아직 해결되지 않았습니다:

  • README.md에 린트 관련 문서화가 누락되어 있습니다
  • 각 린트 도구의 역할과 실행 방법에 대한 설명이 필요합니다
  • unstable_ts_config 플래그의 용도와 영향에 대한 설명이 필요합니다

다음 스크립트로 문서화 상태를 확인할 수 있습니다:

#!/bin/bash
# README.md 파일에서 린트 관련 문서 확인
echo "Checking for lint documentation..."
rg -i "lint|eslint|biome" README.md || echo "No lint documentation found in README.md"

# CONTRIBUTING.md 파일 확인
echo -e "\nChecking for contributing guidelines..."
fd -g "CONTRIBUTING.md" || echo "No CONTRIBUTING.md found"

17-18: ⚠️ Potential issue

린트 스크립트 설정 관련 문제점

다음과 같은 문제점들이 발견되었습니다:

  1. lint:biome 스크립트는 존재하지만 @biomejs/biome 의존성이 누락되어 있습니다
  2. lint:eslint 스크립트는 존재하지만 eslint 의존성이 누락되어 있습니다
  3. --flag unstable_ts_config 플래그의 용도와 영향이 불분명합니다

다음 의존성들을 devDependencies에 추가해주세요:

  "devDependencies": {
+   "@biomejs/biome": "catalog:",
+   "eslint": "catalog:",
    // ... 기존 의존성들
  }

Likely invalid or redundant comment.

packages/card/package.json (1)

17-18: Biome와 ESLint 설정 검토 필요

새로운 lint 명령어들이 추가되었지만 몇 가지 우려사항이 있습니다:

  1. @biomejs/biome 의존성이 제거되었음에도 biome lint 명령어가 존재합니다.
  2. ESLint의 --flag unstable_ts_config 플래그는 안정적이지 않은 기능을 사용하고 있음을 나타냅니다.

다음 스크립트를 실행하여 workspace 수준에서 biome이 설정되어 있는지 확인하겠습니다:

✅ Verification successful

Biome와 ESLint 설정이 적절히 구성되어 있습니다

검증 결과 다음 사항들이 확인되었습니다:

  1. Biome은 루트 레벨에서 @biomejs/biome@^1.9.4로 적절히 설정되어 있으며, biome.json 설정 파일도 존재합니다.
  2. ESLint도 루트 레벨에서 eslint@^9.17.0로 설정되어 있습니다.
  3. unstable_ts_config 플래그는 ESLint의 TypeScript 관련 실험적 기능을 활성화하는 것으로, 프로젝트의 요구사항에 따라 의도적으로 사용된 것으로 보입니다.

패키지 레벨의 lint 명령어들은 워크스페이스의 의존성을 올바르게 활용하고 있습니다.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify Biome configuration at workspace level

# Check if biome exists in root package.json
echo "Checking root package.json for biome..."
cat package.json | jq '.dependencies["@biomejs/biome"] // .devDependencies["@biomejs/biome"]'

# Check if biome config exists
echo "Checking for biome configuration file..."
fd -t f "^biome\.(json|js)$"

Length of output: 326


Script:

#!/bin/bash
# Check the content of biome.json and package.json for more context
echo "=== Root biome.json configuration ==="
cat biome.json

echo -e "\n=== Root package.json scripts section ==="
cat package.json | jq '.scripts'

echo -e "\n=== Check if eslint config exists ==="
fd -t f "^\.eslint"

Length of output: 1159


Script:

#!/bin/bash
# Check for ESLint configuration with hidden files
echo "=== Checking for ESLint configuration files ==="
fd -H -t f "^\.eslint"

echo -e "\n=== Check workspace dependencies for eslint ==="
cat package.json | jq '.dependencies["eslint"] // .devDependencies["eslint"]'

echo -e "\n=== Check card package.json for eslint configuration ==="
cat packages/card/package.json | jq '.eslintConfig'

Length of output: 516

{ ignores: ['**/dist/'] },
{
rules: {
'no-duplicate-imports': 'error',
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

biome에 이게 없나했는데, css만이라니.. eslint랑 워낙 같이 써야하는 존재였군요.

https://biomejs.dev/linter/rules/no-duplicate-at-import-rules/

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

biome이 아직 응애라서 없는 룰들이 몇 개 있드라 😭

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

형이 biome 메인테이너 해줘

Copy link
Copy Markdown
Contributor

@froggy1014 froggy1014 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제가 볼때는 문제 없어보이네용 감사합니다 ~

넘겨 받아서 pre-commit 작업 진행할게용 ~

@noahluftyang noahluftyang merged commit 4656c79 into main Jan 1, 2025
@noahluftyang noahluftyang deleted the feat/eslint branch January 1, 2025 11:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants