Skip to content
| Marketplace
Sign in
Visual Studio Code>Linters>Convention LintNew to Visual Studio Code? Get it now.
Convention Lint

Convention Lint

Drangon-Knight

|
21 installs
| (0) | Free
Enforce naming conventions for files, folders, and HTML class/id
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

🎯 Convention Lint

코드의 일관성, 팀의 생산성을 높이는 네이밍 규칙 지킴이

VSCode License Version

"더 이상 코드 리뷰에서 네이밍 규칙 때문에 시간을 낭비하지 마세요!"

Convention Lint는 HTML/CSS 클래스명, ID, 파일/폴더명의 네이밍 규칙을 실시간으로 검사하고, 저장 시 자동으로 검증하여 팀 전체의 코드 컨벤션을 일관되게 유지할 수 있도록 도와줍니다.


💡 왜 Convention Lint를 사용해야 할까요?

😫 이런 경험 있으신가요?

  • ❌ 팀원마다 다른 네이밍 스타일로 코드가 혼란스러워요
  • ❌ 코드 리뷰에서 "이건 kebab-case로 써주세요"라는 댓글만 수십 개...
  • ❌ 프로젝트가 커질수록 네이밍 컨벤션이 무너져요
  • ❌ 신입 개발자가 기존 규칙을 몰라서 매번 수정 요청해요

✅ Convention Lint가 해결해드립니다!

  • ✨ 실시간 검사: 타이핑하는 순간 규칙 위반을 즉시 표시
  • 🚨 명확한 피드백: "공백 포함", "대문자 사용" 등 구체적인 에러 메시지
  • 🛡️ 저장 방지: 규칙을 지키지 않으면 저장 자체를 차단
  • 🎨 유연한 설정: 프로젝트마다 다른 규칙 적용 가능
  • ⚡ 즉시 적용: .convention.json 하나로 팀 전체 규칙 공유

✨ 주요 기능

📝 5가지 네이밍 규칙 지원

규칙 형식 예시 용도
kebab-case lowercase-with-dash my-button, user-card HTML 클래스, CSS 파일명
camelCase lowerCamelCase userId, userName JavaScript 변수, HTML ID
snake_case lowercase_with_underscore icon_user, bg_header 이미지 파일명
PascalCase UpperCamelCase MyComponent, UserService React 컴포넌트, 폴더명
lowercase lowercaseonly assets, images 폴더명 (구분자 없음)

🚨 실시간 에러 표시 & 구체적인 피드백

<!-- ❌ 잘못된 예시 -->
<div class="My Button">
<!-- 🔴 kebab-case 규칙 (소문자+숫자, 하이픈(-)으로 구분) 위반: 공백 포함, 대문자 포함 -->

<div id="user-id">
<!-- 🔴 camelCase 규칙 (첫 글자 소문자, 단어마다 대문자) 위반: 구분자(-) 사용 불가 -->
  • 빨간 물결 밑줄로 위반 항목 표시
  • 라인 전체 배경색 강조
  • 마우스 호버 시 구체적인 위반 사유 표시 (공백, 대문자, 잘못된 구분자 등)

💾 저장 시 자동 검증

  • Ctrl+S 저장 시 자동 검사
  • 규칙 위반 시 저장 차단 + 경고 메시지
  • 통과 시에만 저장 허용 → 실수로 잘못된 코드가 커밋되는 것을 방지

🔄 원클릭 토글 기능

  • VSCode 하단 상태 표시줄에서 Convention: ON/OFF 클릭
  • 임시로 검사를 비활성화하고 싶을 때 유용
  • 다시 클릭하면 즉시 활성화

⚛️ Atomic CSS 자동 감지

<!-- ✅ Atomic CSS 클래스는 자동으로 검사 제외 -->
<div class="w100p h50vh mt10px df aic jcc bg007BFF">
  <!-- Tailwind, UnoCSS 스타일의 유틸리티 클래스 모두 지원 -->
</div>
  • w100p, mt10px, bg007BFF 같은 Atomic CSS 패턴 자동 감지
  • Tailwind CSS, UnoCSS 등 유틸리티 우선 CSS 프레임워크와 호환

🌐 템플릿 엔진 지원

<!-- ✅ PHP, Vue, EJS 등 템플릿 구문은 자동 예외 처리 -->
<div class="<?= $className ?>" id="{{ userId }}">
  <img src="<%= imagePath %>" />
</div>
  • PHP (<?php, <?=), Vue/Angular ({{ }}), EJS (<% %>), Jinja ({% %}), Razor (@{ }) 등 모든 주요 템플릿 엔진 지원
  • 동적으로 생성되는 값은 검사하지 않음

🚫 SVG 완전 예외 처리

<!-- ✅ SVG 내부는 모든 규칙 무시 -->
<svg>
  <circle class="AnyClassName" id="any-id-format" />
</svg>
  • SVG 파일 (.svg) 및 <svg> 태그 내부는 검사하지 않음
  • SVG는 표준 속성명이 다르기 때문에 예외 처리

📦 설치 방법

⚡ 빠른 설치 (추천)

VSCode에서 단 3초 만에 설치하세요!

1. VSCode 실행
2. Ctrl+P 입력
3. ext install Drangon-Knight.convention-lint 입력 후 Enter

🔗 다른 설치 방법

Marketplace 웹사이트에서 설치

  • VSCode Marketplace 방문
  • "Install" 버튼 클릭

VSIX 파일로 설치

code --install-extension convention-lint-0.2.3.vsix

🚀 빠른 시작 가이드

1단계: 설정 파일 생성 (30초 소요)

프로젝트 루트에 .convention.json 파일을 만들어주세요:

{
  "convention": {
    "ignoreAtomicCSS": true,
    "classNamingRule": "kebab-case",
    "idNamingRule": "camelCase",
    "folderNamingRule": "lowercase",
    "fileNamingRule": "snake_case",
    "ignore": ["node_modules", ".git", "dist", "build"]
  }
}
📝 각 옵션 설명 보기
옵션 설명 예시 값
ignoreAtomicCSS Atomic CSS 클래스 무시 여부 true / false
classNamingRule HTML 클래스명 규칙 kebab-case, camelCase 등
idNamingRule HTML ID 규칙 camelCase, kebab-case 등
folderNamingRule 폴더명 규칙 lowercase, PascalCase 등
fileNamingRule 파일명 규칙 snake_case, kebab-case 등
ignore 검사 제외 폴더/파일 ["node_modules", "dist"]

2단계: 코드 작성하고 확인하기

이제 코딩을 시작하면 자동으로 검사가 진행됩니다!

<!-- ✅ 올바른 예시 - 문제 없음 -->
<div class="my-button user-card" id="userId">
  <img src="https://github.com/Drangon-Knight/convention-lint/raw/HEAD/assets/icon_user.png" />
</div>

<!-- ❌ 잘못된 예시 - 빨간 밑줄 표시됨 -->
<div class="My Button UserCard" id="user-id">
  <!-- 🔴 kebab-case 위반: 공백 포함, 대문자 포함 -->
  <img src="https://github.com/Drangon-Knight/convention-lint/raw/HEAD/Assets/IconUser.png" />
  <!-- 🔴 폴더명/파일명 규칙 위반 -->
</div>

3단계: 저장하기

  • Ctrl+S를 눌러 저장해보세요
  • ✅ 규칙 준수: 정상 저장
  • ❌ 규칙 위반: 저장 차단 + 구체적인 에러 메시지 표시

4단계: 필요 시 토글 기능 사용

  • VSCode 하단 상태 표시줄에서 Convention: ON 클릭
  • 임시로 검사를 끄고 싶을 때 유용해요
  • 다시 클릭하면 즉시 활성화됩니다

🎬 실제 사용 예시

시나리오 1: 프론트엔드 프로젝트

{
  "convention": {
    "classNamingRule": "kebab-case",
    "idNamingRule": "camelCase",
    "folderNamingRule": "lowercase",
    "fileNamingRule": "kebab-case",
    "ignoreAtomicCSS": true,
    "ignore": ["node_modules", "dist", "build"]
  }
}

적용 결과:

  • 클래스: user-profile, nav-menu ✅
  • ID: userId, menuToggle ✅
  • 폴더: components, assets ✅
  • 파일: user-card.html, main-style.css ✅

시나리오 2: React + TypeScript 프로젝트

{
  "convention": {
    "classNamingRule": "kebab-case",
    "idNamingRule": "camelCase",
    "folderNamingRule": "PascalCase",
    "fileNamingRule": "PascalCase",
    "docExtensions": [".tsx", ".jsx"],
    "ignore": ["node_modules", "build", ".next"]
  }
}

적용 결과:

  • 컴포넌트 폴더: Components/, Hooks/ ✅
  • 파일명: UserCard.tsx, NavMenu.tsx ✅
  • 클래스: user-card, nav-item ✅

시나리오 3: 이미지 중심 프로젝트

{
  "convention": {
    "folderNamingRule": "lowercase",
    "fileNamingRule": "snake_case",
    "assetExtensions": [".png", ".jpg", ".svg", ".webp"],
    "assetFileRule": "snake_case",
    "assetTypes": ["icon", "bg", "thumb", "logo"],
    "ignore": ["node_modules"]
  }
}

적용 결과:

  • 폴더: images/, assets/ ✅
  • 파일: icon_user.png, bg_header.jpg ✅
  • 에셋 타입: icon_, bg_, thumb_ 접두사 인식 ✅

⚙️ 전체 설정 옵션

📋 기본 설정

옵션 타입 기본값 설명
ignoreAtomicCSS boolean true Atomic CSS 클래스 무시 여부
classNamingRule string kebab-case HTML 클래스명 규칙
idNamingRule string camelCase HTML ID 규칙
folderNamingRule string lowercase 폴더명 규칙
fileNamingRule string snake_case 파일명 규칙
ignore array [] 검사 제외 폴더/파일 경로

🔧 고급 설정

📄 문서 파일 설정
{
  "convention": {
    "docExtensions": [".html", ".vue", ".jsx", ".tsx"],
    "docFileRule": "kebab-case"
  }
}
  • docExtensions: 문서로 취급할 확장자 목록
  • docFileRule: 문서 파일의 네이밍 규칙
🖼️ 에셋 파일 설정
{
  "convention": {
    "assetExtensions": [".png", ".jpg", ".svg", ".webp"],
    "assetFileRule": "snake_case",
    "assetTypes": ["icon", "bg", "thumb", "logo"]
  }
}
  • assetExtensions: 에셋으로 취급할 확장자
  • assetFileRule: 에셋 파일의 네이밍 규칙
  • assetTypes: 인식할 에셋 타입 접두사

사용 예:

  • icon_user.png ✅
  • bg_header.jpg ✅
  • thumb_product.webp ✅

📂 프로젝트 전체 검사 기능

단일 파일이 아닌, 프로젝트 전체를 한 번에 검사할 수 있습니다!

사용 방법

  1. Ctrl+Shift+P (명령 팔레트 열기)
  2. Check Folder Rules 입력 후 실행
  3. 검사할 폴더 선택
  4. 위반 사항이 발견되면 error-log-[타임스탬프].txt 자동 생성

생성되는 로그 예시

=== Convention Lint 검사 결과 ===
검사 시간: 2024-01-15 14:30:22

[DocClass] /src/components/UserCard.html
  → "MyButton" - kebab-case 규칙 (소문자+숫자, 하이픈(-)으로 구분) 위반: 대문자 포함

[DocId] /src/pages/index.html
  → "user-id" - camelCase 규칙 (첫 글자 소문자, 단어마다 대문자) 위반: 구분자(-) 사용 불가

[FileName] /assets/images/iconUser.png
  → "iconUser" - snake_case 규칙 (소문자+숫자, 언더스코어(_)로 구분) 위반: 대문자 포함

총 3개의 위반 사항 발견

🔧 지원 명령어

명령어 설명 실행 방법
Show Save Prompt 파일 저장 시 검사 실행 Ctrl+S (자동)
Check Folder Rules 프로젝트 전체 폴더 검사 Ctrl+Shift+P → 명령 입력
상태 표시줄 토글 검사 기능 ON/OFF 하단 Convention: ON 클릭

💬 자주 묻는 질문 (FAQ)

❓ 검사가 작동하지 않아요

체크리스트:

  1. VSCode 하단 상태 표시줄에서 Convention: ON 상태인지 확인
  2. 프로젝트 루트에 .convention.json 파일이 있는지 확인
  3. VSCode를 재시작해보세요
❓ Tailwind CSS 같은 Atomic CSS 클래스에 빨간 줄이 그어져요

.convention.json에 다음 옵션을 추가하세요:

{
  "convention": {
    "ignoreAtomicCSS": true
  }
}

w100p, mt10px, bgFF0000 같은 패턴을 자동으로 감지해 검사에서 제외합니다.

❓ 특정 폴더나 파일을 검사에서 제외하고 싶어요

ignore 옵션을 사용하세요:

{
  "convention": {
    "ignore": ["node_modules", "dist", "build", "test"]
  }
}
❓ PHP나 Vue 템플릿 구문이 계속 감지돼요

걱정하지 마세요! Convention Lint는 다음 템플릿 구문을 자동으로 예외 처리합니다:

  • PHP: <?php, <?=
  • Vue/Angular: {{ }}
  • EJS: <% %>
  • Jinja: {% %}, {# #}
  • Razor: @{ }

만약 여전히 문제가 있다면, 이슈로 제보해주세요!

❓ 저장이 안 되고 차단돼요

이건 버그가 아니라 의도된 기능입니다!

  1. 파일에서 빨간 물결 밑줄이 있는 부분 찾기
  2. 마우스를 올려 구체적인 에러 메시지 확인
  3. 규칙에 맞게 수정 후 다시 저장

임시로 저장해야 한다면:

  • 하단 상태 표시줄에서 Convention: ON 클릭 → OFF로 변경
  • 저장 후 다시 ON으로 변경
❓ SVG 파일 내부도 검사하나요?

아니요! SVG 파일(.svg)과 <svg> 태그 내부는 완전히 예외 처리됩니다. SVG는 표준 속성명이 다르기 때문에 검사하지 않습니다.

❓ 팀 전체에 규칙을 적용하려면?
  1. 프로젝트 루트에 .convention.json 생성
  2. 원하는 규칙 설정
  3. Git에 커밋
  4. 팀원들이 Convention Lint 설치

이제 모든 팀원이 동일한 규칙으로 코딩할 수 있습니다! 🎉


📝 변경 이력

🎉 v0.2.3 (최신)

  • ✅ lowercase 네이밍 규칙 추가 - 폴더명에 적합한 구분자 없는 소문자 규칙
  • ✅ 구체적인 에러 메시지 - "kebab-case 위반: 공백 포함, 대문자 포함" 같은 명확한 피드백
  • ✅ 템플릿 엔진 지원 - PHP, Vue, EJS, Jinja, Razor 등 7가지 템플릿 자동 감지
  • ✅ SVG 완전 예외 처리 - SVG 파일 및 태그 내부 검사 제외
  • ✅ Atomic CSS 자동 감지 - Tailwind, UnoCSS 스타일 유틸리티 클래스 지원
  • ✅ PascalCase 규칙 지원 - React 컴포넌트 네이밍에 적합
  • ✅ 난독화 빌드 시스템 - 소스 코드 보안 강화

v0.2.0

  • 실시간 검사 기능
  • 토글 기능 (ON/OFF)
  • 저장 시 자동 검증

v0.1.0

  • 초기 릴리즈
  • 기본 네이밍 규칙 검사 (kebab-case, camelCase, snake_case)

🤝 기여하기

Convention Lint를 더 좋게 만들어주세요!

  • 🐛 버그 제보: GitHub Issues
  • 💡 기능 제안: GitHub Discussions
  • ⭐ 별표 주기: 프로젝트가 도움이 되었다면 GitHub에서 별표를 눌러주세요!

📜 라이선스

MIT License - 자유롭게 사용하세요!


👤 제작자

Drangon-Knight

프론트엔드 개발자들의 생산성을 높이기 위해 Convention Lint를 만들었습니다.

  • 📦 VSCode Marketplace
  • 🐙 GitHub

🎯 일관된 코드 스타일, 더 나은 협업

Convention Lint와 함께하세요!

Install

⭐ 유용하다면 별점을 남겨주세요! ⭐

마켓플레이스에서 설치하기 • 이슈 제보하기 • 사용 후기 남기기


"더 이상 코드 리뷰에서 네이밍 때문에 시간을 낭비하지 마세요."

Made with ❤️ by Drangon-Knight

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft