Initial commit
This commit is contained in:
11
.claude-plugin/plugin.json
Normal file
11
.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "project-cleaner",
|
||||
"description": "Smart file cleanup before deployment - removes unused backups and packages",
|
||||
"version": "1.0.0",
|
||||
"author": {
|
||||
"name": "Lightsoft"
|
||||
},
|
||||
"commands": [
|
||||
"./commands"
|
||||
]
|
||||
}
|
||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# project-cleaner
|
||||
|
||||
Smart file cleanup before deployment - removes unused backups and packages
|
||||
263
commands/cleanup.md
Normal file
263
commands/cleanup.md
Normal file
@@ -0,0 +1,263 @@
|
||||
---
|
||||
description: Smart cleanup for deployment - removes unused backups, temp files, and packages
|
||||
---
|
||||
|
||||
# Project Cleaner
|
||||
|
||||
배포 전 프로젝트를 정리합니다. 백업 파일, 임시 파일, 사용하지 않는 패키지를 스마트하게 탐지하고 제거합니다.
|
||||
|
||||
## Steps to follow:
|
||||
|
||||
### 1. 백업 및 임시 파일 탐지
|
||||
|
||||
다음 패턴의 파일들을 프로젝트 전체에서 찾으세요:
|
||||
|
||||
**백업 파일:**
|
||||
- `*.bak`
|
||||
- `*.backup`
|
||||
- `*.old`
|
||||
- `*~` (vim 백업)
|
||||
- `*.swp`, `*.swo` (vim swap)
|
||||
|
||||
**OS 임시 파일:**
|
||||
- `.DS_Store` (macOS)
|
||||
- `Thumbs.db`, `desktop.ini` (Windows)
|
||||
|
||||
**개발 임시 파일:**
|
||||
- `*.tmp`
|
||||
- `*.temp`
|
||||
- `*.log` (선택적 - 사용자에게 물어보기)
|
||||
|
||||
**제외할 폴더:**
|
||||
- `node_modules/`
|
||||
- `.git/`
|
||||
- `dist/`, `build/`, `out/`
|
||||
- `.next/`, `.nuxt/`
|
||||
- `coverage/`
|
||||
|
||||
Glob 또는 Grep 도구를 사용하여 파일 목록을 수집하세요.
|
||||
|
||||
### 2. 의존성 분석 (핵심 로직)
|
||||
|
||||
찾은 각 백업/임시 파일에 대해 다음을 수행:
|
||||
|
||||
#### A. 파일 참조 검색
|
||||
|
||||
각 백업 파일이 **어디서 import/require 되는지** Grep으로 검색:
|
||||
|
||||
**검색 패턴 (JavaScript/TypeScript):**
|
||||
```regex
|
||||
import.*from.*['"].*파일명.*['"]
|
||||
require\(['"].*파일명.*['"]\)
|
||||
```
|
||||
|
||||
**검색 패턴 (Python):**
|
||||
```regex
|
||||
import.*파일명
|
||||
from.*파일명.*import
|
||||
```
|
||||
|
||||
**검색 패턴 (일반):**
|
||||
- 파일명을 그대로 검색 (확장자 포함)
|
||||
|
||||
**예시:**
|
||||
- `utils.js.bak` 찾았다면
|
||||
- 프로젝트 전체에서 `utils.js.bak`를 검색
|
||||
- import 또는 require 하는 파일이 있는지 확인
|
||||
|
||||
#### B. 참조 파일 분류
|
||||
|
||||
검색 결과를 분석하여:
|
||||
|
||||
1. **실제 코드에서 참조** (`.bak`/`.old` 없는 일반 파일에서 import)
|
||||
- → **삭제 불가** (경고 표시)
|
||||
- 예: `main.js`가 `api.js.bak`를 import
|
||||
|
||||
2. **백업 파일끼리만 참조** (`.bak` → `.bak`)
|
||||
- → **삭제 가능** (미사용 그룹)
|
||||
- 예: `a.js.bak` ← `b.js.bak` ← `c.js.bak` (순환)
|
||||
|
||||
3. **아무도 참조 안 함**
|
||||
- → **삭제 가능** (안전)
|
||||
|
||||
#### C. 그룹화
|
||||
|
||||
백업 파일끼리만 참조하는 경우 그룹으로 묶어서 표시:
|
||||
```
|
||||
미사용 백업 파일 그룹:
|
||||
- old/utils.js.bak
|
||||
- old/api.js.bak
|
||||
- old/helpers.js.bak
|
||||
(서로만 참조하고 실제 코드와 무관)
|
||||
```
|
||||
|
||||
### 3. 사용하지 않는 패키지 분석
|
||||
|
||||
`package.json` 파일이 있는지 확인:
|
||||
|
||||
#### A. package.json 읽기
|
||||
- `dependencies`와 `devDependencies` 목록 추출
|
||||
|
||||
#### B. 각 패키지 사용 여부 검색
|
||||
|
||||
각 패키지에 대해 Grep으로 검색:
|
||||
|
||||
**검색 패턴:**
|
||||
```regex
|
||||
import.*from.*['"]패키지명['"]
|
||||
require\(['"]패키지명['"]\)
|
||||
```
|
||||
|
||||
**주의사항:**
|
||||
- `@types/` 패키지는 TypeScript에서 자동 사용 (스킵)
|
||||
- `eslint-`, `prettier-` 등 설정 패키지는 config 파일에서 사용 확인
|
||||
- peer dependencies는 체크하지 않음
|
||||
|
||||
#### C. 미사용 패키지 목록 생성
|
||||
|
||||
실제 코드에서 import/require 되지 않는 패키지를 리스트업
|
||||
|
||||
**선택적:** `depcheck` 도구 설치 및 실행
|
||||
```bash
|
||||
npx depcheck
|
||||
```
|
||||
|
||||
### 4. 삭제 목록 표시
|
||||
|
||||
사용자에게 한국어로 보기 좋게 정리된 목록을 보여주세요:
|
||||
|
||||
```markdown
|
||||
# 🗑️ 프로젝트 정리 결과
|
||||
|
||||
## ✅ 안전하게 삭제 가능한 파일
|
||||
|
||||
### 백업 파일 (12개)
|
||||
- src/utils.js.bak (어디서도 사용 안 됨)
|
||||
- src/api/old.js~ (어디서도 사용 안 됨)
|
||||
- components/Button.jsx.old (어디서도 사용 안 됨)
|
||||
...
|
||||
|
||||
### 미사용 백업 파일 그룹 (3개 파일)
|
||||
- old/legacy-api.js.bak
|
||||
- old/legacy-utils.js.bak
|
||||
- old/legacy-helpers.js.bak
|
||||
(서로만 참조, 실제 코드와 무관)
|
||||
|
||||
### OS 임시 파일 (5개)
|
||||
- .DS_Store
|
||||
- src/.DS_Store
|
||||
- public/Thumbs.db
|
||||
...
|
||||
|
||||
### 개발 임시 파일 (3개)
|
||||
- debug.log
|
||||
- test.tmp
|
||||
- .swp
|
||||
...
|
||||
|
||||
## 📦 사용하지 않는 패키지
|
||||
|
||||
### npm 패키지 (4개)
|
||||
- lodash (코드에서 import 없음)
|
||||
- moment (코드에서 import 없음)
|
||||
- axios (코드에서 import 없음)
|
||||
- chalk (코드에서 import 없음)
|
||||
|
||||
예상 절약 용량: ~2.3MB (파일) + ~15MB (패키지)
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 주의 필요
|
||||
|
||||
### 여전히 사용 중인 백업 파일
|
||||
- config/database.js.bak (src/main.js에서 참조 중!)
|
||||
→ 삭제하면 안 됩니다. 실제 코드를 먼저 수정하세요.
|
||||
|
||||
---
|
||||
|
||||
계속 진행하시겠습니까?
|
||||
```
|
||||
|
||||
### 5. 사용자 확인
|
||||
|
||||
다음 옵션을 제공:
|
||||
1. **모두 삭제** - 안전한 항목 전부 삭제
|
||||
2. **파일만 삭제** - 백업/임시 파일만 삭제 (패키지 유지)
|
||||
3. **패키지만 제거** - npm 패키지만 제거
|
||||
4. **취소** - 아무것도 안 함
|
||||
|
||||
사용자의 선택을 기다리세요.
|
||||
|
||||
### 6. 삭제 실행
|
||||
|
||||
사용자가 승인하면:
|
||||
|
||||
#### A. 파일 삭제
|
||||
```bash
|
||||
rm -f [파일 목록]
|
||||
```
|
||||
|
||||
각 파일을 삭제하면서 진행 상황 표시:
|
||||
```
|
||||
🗑️ 삭제 중...
|
||||
✓ src/utils.js.bak 삭제됨
|
||||
✓ .DS_Store 삭제됨
|
||||
...
|
||||
```
|
||||
|
||||
#### B. 패키지 제거
|
||||
```bash
|
||||
npm uninstall [패키지1] [패키지2] ...
|
||||
```
|
||||
|
||||
#### C. 최종 정리 (선택적)
|
||||
```bash
|
||||
npm prune
|
||||
```
|
||||
|
||||
### 7. 완료 메시지
|
||||
|
||||
작업 완료 후 요약:
|
||||
|
||||
```markdown
|
||||
✅ 프로젝트 정리 완료!
|
||||
|
||||
🗑️ 삭제된 항목:
|
||||
- 백업 파일: 12개
|
||||
- 임시 파일: 8개
|
||||
- npm 패키지: 4개
|
||||
|
||||
💾 절약된 용량: ~17.3MB
|
||||
|
||||
📦 다음 단계:
|
||||
1. git status로 변경사항 확인
|
||||
2. 프로젝트가 정상 작동하는지 테스트
|
||||
3. 문제없으면 커밋
|
||||
|
||||
깔끔하게 정리되었습니다! 🎉
|
||||
```
|
||||
|
||||
## Important Notes:
|
||||
|
||||
### 안전 장치
|
||||
- **절대 삭제하면 안 되는 것:**
|
||||
- `node_modules/` 내부 파일 (전체 폴더는 괜찮음)
|
||||
- `.git/` 관련 파일
|
||||
- 실제 코드에서 참조 중인 파일
|
||||
- `package.json`, `package-lock.json`
|
||||
|
||||
### 검색 최적화
|
||||
- Grep 도구로 빠르게 검색
|
||||
- 파일 확장자별로 적절한 패턴 사용
|
||||
- 대소문자 구분 주의 (운영체제별)
|
||||
|
||||
### 사용자 경험
|
||||
- 삭제 전 **반드시** 목록을 보여주고 확인
|
||||
- 위험한 작업은 경고 표시
|
||||
- 한국어로 친절하게 안내
|
||||
- 각 단계마다 진행 상황 표시
|
||||
|
||||
### 에러 처리
|
||||
- 파일 삭제 실패 시 계속 진행하고 마지막에 실패 목록 표시
|
||||
- npm 패키지 제거 실패 시 원인 설명
|
||||
- 권한 문제 등 예상 가능한 에러 안내
|
||||
45
plugin.lock.json
Normal file
45
plugin.lock.json
Normal file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"$schema": "internal://schemas/plugin.lock.v1.json",
|
||||
"pluginId": "gh:lightsoft-dev/claude-plugin-for-dev:project-cleaner",
|
||||
"normalized": {
|
||||
"repo": null,
|
||||
"ref": "refs/tags/v20251128.0",
|
||||
"commit": "ff7e5e2628e54ee0a02da8b663d2317e6e8fea70",
|
||||
"treeHash": "2bfb919052584a8bd26325c229a25da7453ed9e54b25eb09b436f21039503085",
|
||||
"generatedAt": "2025-11-28T10:20:19.746473Z",
|
||||
"toolVersion": "publish_plugins.py@0.2.0"
|
||||
},
|
||||
"origin": {
|
||||
"remote": "git@github.com:zhongweili/42plugin-data.git",
|
||||
"branch": "master",
|
||||
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
|
||||
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
|
||||
},
|
||||
"manifest": {
|
||||
"name": "project-cleaner",
|
||||
"description": "Smart file cleanup before deployment - removes unused backups and packages",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"content": {
|
||||
"files": [
|
||||
{
|
||||
"path": "README.md",
|
||||
"sha256": "949abf89cb3c833291b78ec8e0df29a822d6e65f8f21b4d614376aac3a82392d"
|
||||
},
|
||||
{
|
||||
"path": ".claude-plugin/plugin.json",
|
||||
"sha256": "bcd7ec2a42d431535d87798dbfccc44c607b0ea40e195ad5ac35824caade86c9"
|
||||
},
|
||||
{
|
||||
"path": "commands/cleanup.md",
|
||||
"sha256": "0234bfb8f4697fb6775985f3fdbd3411eeec026d722f27b5441c28d90e4d7a6d"
|
||||
}
|
||||
],
|
||||
"dirSha256": "2bfb919052584a8bd26325c229a25da7453ed9e54b25eb09b436f21039503085"
|
||||
},
|
||||
"security": {
|
||||
"scannedAt": null,
|
||||
"scannerVersion": null,
|
||||
"flags": []
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user