|
| 1 | +<h1 align="center"> |
| 2 | + <br> |
| 3 | + <img src="https://github.com/ljlm0402/packmate/raw/images/logo.png" alt="Project Logo" width="800" /> |
| 4 | + <br> |
| 5 | + <br> |
| 6 | + PackMate |
| 7 | + <br> |
| 8 | +</h1> |
| 9 | + |
| 10 | +<h4 align="center">โป๏ธ ์ค๋งํธํ๊ณ ์น๊ทผํ ์์กด์ฑ ์
๋ฐ์ดํธ ๋ฐ ์ ๋ฆฌ CLI ๋๊ตฌ</h4> |
| 11 | + |
| 12 | +<p align ="center"> |
| 13 | + <a href="https://nodei.co/npm/packmate" target="_blank"> |
| 14 | + <img src="https://nodei.co/npm/packmate.png" alt="npm Info" /> |
| 15 | +</a> |
| 16 | + |
| 17 | +</p> |
| 18 | + |
| 19 | +<p align="center"> |
| 20 | + <a href="http://npm.im/packmate" target="_blank"> |
| 21 | + <img src="https://img.shields.io/npm/v/packmate.svg" alt="npm Version" /> |
| 22 | + </a> |
| 23 | + <a href="http://npm.im/packmate" target="_blank"> |
| 24 | + <img src="https://img.shields.io/github/v/release/ljlm0402/packmate" alt="npm Release Version" /> |
| 25 | + </a> |
| 26 | + <a href="http://npm.im/packmate" target="_blank"> |
| 27 | + <img src="https://img.shields.io/npm/dm/packmate.svg" alt="npm Downloads" /> |
| 28 | + </a> |
| 29 | + <a href="http://npm.im/packmate" target="_blank"> |
| 30 | + <img src="https://img.shields.io/npm/l/packmate.svg" alt="npm Package License" /> |
| 31 | + </a> |
| 32 | +</p> |
| 33 | + |
| 34 | +<p align="center"> |
| 35 | + <a href="https://github.com/ljlm0402/packmate/stargazers" target="_blank"> |
| 36 | + <img src="https://img.shields.io/github/stars/ljlm0402/packmate" alt="github Stars" /> |
| 37 | + </a> |
| 38 | + <a href="https://github.com/ljlm0402/packmate/network/members" target="_blank"> |
| 39 | + <img src="https://img.shields.io/github/forks/ljlm0402/packmate" alt="github Forks" /> |
| 40 | + </a> |
| 41 | + <a href="https://github.com/ljlm0402/packmate/stargazers" target="_blank"> |
| 42 | + <img src="https://img.shields.io/github/contributors/ljlm0402/packmate" alt="github Contributors" /> |
| 43 | + </a> |
| 44 | + <a href="https://github.com/ljlm0402/packmate/issues" target="_blank"> |
| 45 | + <img src="https://img.shields.io/github/issues/ljlm0402/packmate" alt="github Issues" /> |
| 46 | + </a> |
| 47 | +</p> |
| 48 | + |
| 49 | +<br /> |
| 50 | + |
| 51 | +--- |
| 52 | + |
| 53 | +[English](./README.md) | **ํ๊ตญ์ด** |
| 54 | + |
| 55 | +Packmate๋ Node.js ํ๋ก์ ํธ ์์กด์ฑ์ ๊ด๋ฆฌ, ์
๋ฐ์ดํธ ๋ฐ ์ ๋ฆฌํ๋ ํ๋์ ์ธ CLI ๋๊ตฌ์
๋๋ค. |
| 56 | +**npm**, **pnpm**, **yarn**์ ์ง์ํ๋ฉฐ, ์ง๊ด์ ์ธ ์ธํฐ๋ํฐ๋ธ UI์ ๊ฐ๋ ฅํ ์ฑ๋ฅ ์ต์ ํ๋ก ํ๋ก์ ํธ๋ฅผ ๋ ๋น ๋ฅด๊ณ ์์ ํ๊ฒ ์ต์ ์ํ๋ก ์ ์งํ ์ ์์ต๋๋ค. |
| 57 | + |
| 58 | +## ๐ค ์ Packmate์ธ๊ฐ์? |
| 59 | + |
| 60 | +- **โก ์ฑ๋ฅ**: 3๋จ๊ณ ์บ์ฑ ์์คํ
์ผ๋ก 6๋ฐฐ ๋ ๋น ๋ฆ (๋ฉ๋ชจ๋ฆฌ + ๋์คํฌ + ๋คํธ์ํฌ) |
| 61 | +- **๐ฏ ์ ํ์ฑ**: ๊ฐ๋ฐ ๋๊ตฌ ์ธํ
๋ฆฌ์ ์ค๋ก 90% ์ด์์ ๋ฏธ์ฌ์ฉ ํจํค์ง ํ์ง |
| 62 | +- **๐ก๏ธ ์์ ์ฑ**: ํจํค์ง ๋งค๋์ ์ค๋งํธ ํด๋ฐฑ, ๋ฏธ์ฌ์ฉ ํจํค์ง๋ ์
๋ฐ์ดํธ ์ ์ธ |
| 63 | +- **๐จ ๋ช
๋ฃ์ฑ**: ๊ทธ๋ฃน๋ณ UI ์ธ์
(Patch/Minor/Major) ๋ฐ ์์ ์ฝ๋ฉ ์
๋ฐ์ดํธ |
| 64 | +- **๐ง ์ ์ฐ์ฑ**: `packmate.config.json`์ ํตํ ์์ ํ ์ค์ ์ง์ |
| 65 | +- **๐ ํ๋์ **: ๊น๋ํ๊ณ ์ ๋ฌธ์ ์ธ ์ธํฐํ์ด์ค์ ์ง๊ด์ ์ธ ์ํฌํ๋ก์ฐ |
| 66 | + |
| 67 | +## ๐ ์ฃผ์ ๊ธฐ๋ฅ |
| 68 | + |
| 69 | +### ์ฑ๋ฅ ๋ฐ ์ต์ ํ |
| 70 | +- **3๋จ๊ณ ์บ์ฑ ์์คํ
**: ๋ฉ๋ชจ๋ฆฌ โ ๋์คํฌ (1์๊ฐ TTL) โ ๋คํธ์ํฌ |
| 71 | + - ์ฒซ ์คํ: ํ์ค ์๋ |
| 72 | + - ๋ ๋ฒ์งธ ์คํ: ์บ์๋ ๋ ์ง์คํธ๋ฆฌ ๋ฐ์ดํฐ๋ก **6๋ฐฐ ๋น ๋ฆ** |
| 73 | +- **๋ณ๋ ฌ ์ฒ๋ฆฌ**: ํ์ผ ์ค์บ์ ์ํ ๋ฉํฐ์ฝ์ด CPU ํ์ฉ (**2-4๋ฐฐ ๋น ๋ฆ**) |
| 74 | +- **์ ์ํ ๋์์ฑ**: CPU ์ฝ์ด ๊ธฐ๋ฐ ๋์ ์์ฒญ ์ ํ (8-16 ๋์ ์์ฒญ) |
| 75 | + |
| 76 | +### ์ค๋งํธ ํ์ง |
| 77 | +- **ํฅ์๋ ๋ฏธ์ฌ์ฉ ํจํค์ง ํ์ง** (90% ์ด์ ์ ํ๋): |
| 78 | + - ๋์ import ํ์ง: `import('module')` |
| 79 | + - ์กฐ๊ฑด๋ถ require ํ์ง: `try-catch`, `if` ๋ธ๋ก |
| 80 | + - DevDependencies ์ธํ
๋ฆฌ์ ์ค: ๋น๋ ๋๊ตฌ, ๋ฆฐํฐ, ํ์
์ ์ ์ธ์ |
| 81 | + - ๊ต์ฐจ ๊ฒ์ฆ: precinct + depcheck๋ก ๋์ ์ ๋ขฐ๋ |
| 82 | +- **์
๋ฐ์ดํธ ํ์ง**: |
| 83 | + - Patch/Minor/Major๋ณ ๊ทธ๋ฃนํ ๋ฐ ์์ ์ฝ๋ฉ |
| 84 | + - ๋ฏธ์ฌ์ฉ ํจํค์ง ์๋์ผ๋ก ์
๋ฐ์ดํธ ์ ์์์ ์ ์ธ |
| 85 | + - Semver ๊ธฐ๋ฐ ๋ฒ์ ๋น๊ต |
| 86 | +- **์ค์น ํ์ง**: ์ ์ธ๋์์ง๋ง ์ค์น๋์ง ์์ ํจํค์ง ์ฐพ๊ธฐ |
| 87 | + |
| 88 | +### ๋ฐ์ด๋ UI/UX |
| 89 | +- **๊ทธ๋ฃน๋ณ UI ์ธ์
**: |
| 90 | + - ๐น **Patch ์
๋ฐ์ดํธ** (๋
น์): ๋ฒ๊ทธ ์์ , ์์ ํ๊ฒ ์
๋ฐ์ดํธ |
| 91 | + - ๐ธ **Minor ์
๋ฐ์ดํธ** (๋
ธ๋์): ์๋ก์ด ๊ธฐ๋ฅ, ํ์ ํธํ์ฑ ์ ์ง |
| 92 | + - ๐ถ **Major ์
๋ฐ์ดํธ** (๋นจ๊ฐ์): ์ฃผ์ ๋ณ๊ฒฝ์ฌํญ, ๊ฒํ ํ์ |
| 93 | + - ๐๏ธ **๋ฏธ์ฌ์ฉ ํจํค์ง**: ๋์/์ค๊ฐ ์ ๋ขฐ๋ ๋ ๋ฒจ |
| 94 | + - ๐ฅ **๋ฏธ์ค์น ํจํค์ง**: ๋๋ฝ๋ ์ ์ธ ์์กด์ฑ |
| 95 | + - โ
**์ต์ ๋ฒ์ **: ์ ๋ณด ํ์ ๋ชฉ๋ก (์ ํ ๋ถ๊ฐ) |
| 96 | +- **์์ ๊ธฐ๋ฅ**: |
| 97 | + - Major ์
๋ฐ์ดํธ์ ๋ํ ํ์ธ ํ๋กฌํํธ |
| 98 | + - ์ฃผ์ ๋ณ๊ฒฝ์ฌํญ ๊ฒฝ๊ณ |
| 99 | + - ๋ช
ํํ ์์
์์ฝ |
| 100 | +- **์๊ฐ์ ๊ฐ์ **: |
| 101 | + - ์์ ์ฝ๋ฉ๋ ๋ฒ์ ๋ณ๊ฒฝ |
| 102 | + - ๊ธด ์์
์ ์ํ ์งํ๋ฅ ํ์์ค |
| 103 | + - ๊ณ ์ ๋ ์ฝ์ ๋ฐ์ค ์ ๋ ฌ |
| 104 | + |
| 105 | +### ์ค์ ๋ฐ ์ ์ฐ์ฑ |
| 106 | +- **์ค๋งํธ ํจํค์ง ๋งค๋์ ํ์ง**: |
| 107 | + - ๋ฝ ํ์ผ์์ ์๋ ํ์ง (pnpm-lock.yaml, yarn.lock, package-lock.json) |
| 108 | + - ์ค์น ์ํ ํ์ธ |
| 109 | + - ์ฌ์ฉ ๊ฐ๋ฅํ ๋งค๋์ ๋ก ์๋ ํด๋ฐฑ ๋ฐ ์ ์ฉํ ํ ์ ๊ณต |
| 110 | +- **์ค์ ์ต์
**: |
| 111 | + - ์ปค์คํ
๋ฌด์ ํจํด (glob ์ง์) |
| 112 | + - ๋ถ์ ๋ชจ๋ (conservative/moderate/aggressive) |
| 113 | + - UI ์ปค์คํฐ๋ง์ด์ง (๊ธฐ๋ณธ ์ ํ, ์์ ์คํด) |
| 114 | + - ์บ์ ์ค์ (๊ธฐ๊ฐ, ์์น) |
| 115 | + |
| 116 | +## ๐พ ์ค์น |
| 117 | + |
| 118 | +```sh |
| 119 | +npm install -g packmate |
| 120 | +# ๋๋ |
| 121 | +pnpm add -g packmate |
| 122 | +# ๋๋ |
| 123 | +yarn global add packmate |
| 124 | +``` |
| 125 | + |
| 126 | +์ฆ์ ์คํ: |
| 127 | + |
| 128 | +```sh |
| 129 | +npx packmate |
| 130 | +``` |
| 131 | + |
| 132 | +## ๐ ์ฌ์ฉ๋ฒ |
| 133 | + |
| 134 | +ํ๋ก์ ํธ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์์ ์คํํ์ธ์: |
| 135 | + |
| 136 | +```sh |
| 137 | +packmate |
| 138 | +``` |
| 139 | + |
| 140 | +**์ผ๋ฐ์ ์ธ ์ํฌํ๋ก์ฐ ์์:** |
| 141 | + |
| 142 | +```sh |
| 143 | +โ ๐ฆ Packmate: Dependency Updates & Cleanup |
| 144 | +โ |
| 145 | +โ Info โโโโโโโโโโโโโโโโโโฎ |
| 146 | +โ Package Manager: npm โ |
| 147 | +โโโโโโโโโโโโโโโโโโโโโโโโโโฏ |
| 148 | +โ |
| 149 | +Progress |โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ| 17/17 (100%) |
| 150 | +โ โ
Found 3 packages with available updates |
| 151 | +โ โ
Unused package analysis complete |
| 152 | +โ โ
Found 0 not installed packages |
| 153 | + |
| 154 | +๐ Analysis Results: |
| 155 | + Updates available: 3 |
| 156 | + Unused: 1 |
| 157 | + Not installed: 0 |
| 158 | + Up-to-date: 13 |
| 159 | + |
| 160 | +๐ถ Major Updates (3) |
| 161 | + โ ๏ธ Breaking changes possible - Review carefully |
| 162 | +โ |
| 163 | +โ Select major updates (caution required): |
| 164 | +โ โผ globby 13.2.2 โ 15.0.0 [MAJOR] |
| 165 | +โ โป p-retry 6.2.1 โ 7.1.0 [MAJOR] |
| 166 | +โ โป precinct 10.0.1 โ 12.2.0 [MAJOR] |
| 167 | +โ |
| 168 | +โ ๏ธ Proceed with 1 major update(s)? Breaking changes may be included. |
| 169 | +โ Yes |
| 170 | +โ |
| 171 | +๐๏ธ Unused Packages (High Confidence: 1) |
| 172 | + Safe to remove |
| 173 | +โ |
| 174 | +โ Select packages to remove: |
| 175 | +โ none |
| 176 | +โ |
| 177 | +โ Show already up-to-date packages (13)? |
| 178 | +โ No |
| 179 | +โ |
| 180 | +โ Actions โโโโโโโโโโโโโโโโโโโโฎ |
| 181 | +โ ๐ Actions to execute: โ |
| 182 | +โ - update: globby@15.0.0 โ |
| 183 | +โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ |
| 184 | +โ |
| 185 | +> npm install globby@15.0.0 |
| 186 | +โ๏ธ Package update completed: globby@15.0.0 |
| 187 | + |
| 188 | +โ
Complete: |
| 189 | + Updated: 1 |
| 190 | + Removed: 0 |
| 191 | + Installed: 0 |
| 192 | +โ |
| 193 | +โ Packmate complete! ๐ |
| 194 | +``` |
| 195 | + |
| 196 | +## โ๏ธ ์๊ตฌ์ฌํญ |
| 197 | + |
| 198 | +- Node.js v16 ์ด์ (v18+ ๊ถ์ฅ) |
| 199 | +- npm, yarn, pnpm ์ง์ |
| 200 | +- Mac, Linux, Windows์์ ์๋ |
| 201 | + |
| 202 | +## ๐ CLI ์ต์
|
| 203 | + |
| 204 | +์ถ๊ฐ ์ต์
์์ด ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์์ packmate๋ง ์คํํ๋ฉด ๋ฉ๋๋ค. |
| 205 | +๋ชจ๋ ์ ํ(์
๋ฐ์ดํธ, ์ ๊ฑฐ, ์ค์น)์ ์ธํฐ๋ํฐ๋ธ๋ก ์ด๋ฃจ์ด์ง๋๋ค. |
| 206 | + |
| 207 | +## โ๏ธ ์ค์ |
| 208 | + |
| 209 | +Packmate๋ `packmate.config.json` ๋๋ `package.json`์ `packmate` ํ๋๋ฅผ ํตํด ์ค์ ์ ์ง์ํฉ๋๋ค. |
| 210 | + |
| 211 | +### `packmate.config.json` ์์: |
| 212 | + |
| 213 | +```json |
| 214 | +{ |
| 215 | + "ignorePatterns": ["@types/*", "eslint-*"], |
| 216 | + "analysisMode": { |
| 217 | + "unused": "moderate", |
| 218 | + "devDeps": true |
| 219 | + }, |
| 220 | + "ui": { |
| 221 | + "groupSessions": true, |
| 222 | + "colorScheme": "auto", |
| 223 | + "defaultChecked": { |
| 224 | + "updateAvailable": true, |
| 225 | + "unused": false, |
| 226 | + "notInstalled": true, |
| 227 | + "latest": false |
| 228 | + } |
| 229 | + }, |
| 230 | + "detection": { |
| 231 | + "dynamicImport": true, |
| 232 | + "conditionalRequire": true, |
| 233 | + "ignoreUnused": [ |
| 234 | + "eslint", |
| 235 | + "prettier", |
| 236 | + "jest", |
| 237 | + "webpack" |
| 238 | + ] |
| 239 | + } |
| 240 | +} |
| 241 | +``` |
| 242 | + |
| 243 | +### ์ค์ ์ต์
: |
| 244 | + |
| 245 | +- **ignorePatterns**: ํจํค์ง ๋ฌด์๋ฅผ ์ํ glob ํจํด ๋ฐฐ์ด (์: `["@types/*"]`) |
| 246 | +- **analysisMode.unused**: ํ์ง ๋ชจ๋ - `"conservative"` | `"moderate"` | `"aggressive"` |
| 247 | +- **analysisMode.devDeps**: devDependencies๋ฅผ ๋ณ๋๋ก ๋ถ์ํ ์ง ์ฌ๋ถ |
| 248 | +- **ui.groupSessions**: ๊ทธ๋ฃน๋ณ UI ์ธ์
ํ์ฑํ (Patch/Minor/Major) |
| 249 | +- **ui.defaultChecked**: ๊ฐ ํจํค์ง ์ ํ์ ๊ธฐ๋ณธ ์ ํ ์ํ |
| 250 | +- **detection.dynamicImport**: ๋์ import ํ์ง ํ์ฑํ |
| 251 | +- **detection.conditionalRequire**: ์กฐ๊ฑด๋ถ require ํ์ง ํ์ฑํ |
| 252 | +- **detection.ignoreUnused**: ๋ฏธ์ฌ์ฉ ํ์ง์์ ํญ์ ๋ฌด์ํ ํจํค์ง ๋ชฉ๋ก |
| 253 | + |
| 254 | +### ์บ์ ๊ด๋ฆฌ |
| 255 | + |
| 256 | +Packmate๋ ๋ ๋น ๋ฅธ ํ์ ์คํ์ ์ํด ๋ ์ง์คํธ๋ฆฌ ์๋ต์ ์๋์ผ๋ก ์บ์ํฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์บ์๋ฅผ ์ง์ธ ์ ์์ต๋๋ค: |
| 257 | + |
| 258 | +```bash |
| 259 | +# Windows |
| 260 | +del /q %TEMP%\packmate-cache\* |
| 261 | + |
| 262 | +# Linux/Mac |
| 263 | +rm -rf /tmp/packmate-cache/* |
| 264 | +``` |
| 265 | + |
| 266 | +์บ์ ์์น: |
| 267 | +- Windows: `C:\Users\<user>\AppData\Local\Temp\packmate-cache` |
| 268 | +- Linux/Mac: `/tmp/packmate-cache` |
| 269 | + |
| 270 | +## ๐งโ๐ป ๊ธฐ์ฌํ๊ธฐ |
| 271 | + |
| 272 | +PR๊ณผ ์ด์๋ ์ธ์ ๋ ํ์ํฉ๋๋ค! |
| 273 | + |
| 274 | +- ์ ์ฅ์๋ฅผ ํฌํฌํ๊ณ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ์ธ์. |
| 275 | +- ์ปค๋ฐ ๋ฉ์์ง๋ [Conventional Commits](https://www.conventionalcommits.org/ko/v1.0.0/)๋ฅผ ์ฌ์ฉํ์ธ์. |
| 276 | +- ๋ฒ๊ทธ๋ ์ ์ ์ฌํญ์ [GitHub Issues](https://github.com/ljlm0402/packmate/issues)๋ฅผ ํตํด ์ ์ถํ์ธ์. |
| 277 | + |
| 278 | +## ๐ ๋ผ์ด์ ์ค |
| 279 | + |
| 280 | +MIT ยฉ [AGUMON (ljlm0402)](mailto:ljlm0402@gmail.com) |
| 281 | + |
| 282 | +## ๐ ๋งํฌ |
| 283 | + |
| 284 | +- [GitHub](https://github.com/ljlm0402/packmate) |
| 285 | +- [npm](https://www.npmjs.com/package/packmate) |
0 commit comments