From 1eb1079abd1f7931c56e0cf8b7f6bfeb59aca790 Mon Sep 17 00:00:00 2001 From: Zhongwei Li Date: Sun, 30 Nov 2025 08:37:44 +0800 Subject: [PATCH] Initial commit --- .claude-plugin/plugin.json | 11 ++ README.md | 3 + commands/cleanup.md | 263 +++++++++++++++++++++++++++++++++++++ plugin.lock.json | 45 +++++++ 4 files changed, 322 insertions(+) create mode 100644 .claude-plugin/plugin.json create mode 100644 README.md create mode 100644 commands/cleanup.md create mode 100644 plugin.lock.json diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..8a2765d --- /dev/null +++ b/.claude-plugin/plugin.json @@ -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" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..eb17520 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# project-cleaner + +Smart file cleanup before deployment - removes unused backups and packages diff --git a/commands/cleanup.md b/commands/cleanup.md new file mode 100644 index 0000000..0dfd392 --- /dev/null +++ b/commands/cleanup.md @@ -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 패키지 제거 실패 시 원인 설명 +- 권한 문제 등 예상 가능한 에러 안내 diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..6b34298 --- /dev/null +++ b/plugin.lock.json @@ -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": [] + } +} \ No newline at end of file