UNPKG

packmate

Version:

Your smart and friendly interactive assistant for dependency updates, security advisories, and cleanup.

278 lines (226 loc) โ€ข 8.75 kB
<h1 align="center"> <br> <img src="https://github.com/ljlm0402/packmate/raw/images/logo.png" alt="Project Logo" width="600" /> <br> <br> PackMate <br> </h1> <h4 align="center">๐Ÿค– ์Šค๋งˆํŠธํ•˜๊ณ  ์นœ๊ทผํ•œ ์˜์กด์„ฑ ์—…๋ฐ์ดํŠธ ๋ฐ ์ •๋ฆฌ CLI ๋„๊ตฌ</h4> <p align ="center"> <a href="https://nodei.co/npm/packmate" target="_blank"> <img src="https://nodei.co/npm/packmate.png" alt="npm Info" /> </a> </p> <p align="center"> <a href="http://npm.im/packmate" target="_blank"> <img src="https://img.shields.io/npm/v/packmate.svg" alt="npm Version" /> </a> <a href="http://npm.im/packmate" target="_blank"> <img src="https://img.shields.io/github/v/release/ljlm0402/packmate" alt="npm Release Version" /> </a> <a href="http://npm.im/packmate" target="_blank"> <img src="https://img.shields.io/npm/dm/packmate.svg" alt="npm Downloads" /> </a> <a href="http://npm.im/packmate" target="_blank"> <img src="https://img.shields.io/npm/l/packmate.svg" alt="npm Package License" /> </a> </p> <p align="center"> <a href="https://github.com/ljlm0402/packmate/stargazers" target="_blank"> <img src="https://img.shields.io/github/stars/ljlm0402/packmate" alt="github Stars" /> </a> <a href="https://github.com/ljlm0402/packmate/network/members" target="_blank"> <img src="https://img.shields.io/github/forks/ljlm0402/packmate" alt="github Forks" /> </a> <a href="https://github.com/ljlm0402/packmate/stargazers" target="_blank"> <img src="https://img.shields.io/github/contributors/ljlm0402/packmate" alt="github Contributors" /> </a> <a href="https://github.com/ljlm0402/packmate/issues" target="_blank"> <img src="https://img.shields.io/github/issues/ljlm0402/packmate" alt="github Issues" /> </a> </p> <p align="center"> <strong><a href="./README.md">English</a> ยท ํ•œ๊ตญ์–ด</strong> </p> --- Packmate๋Š” Node.js ํ”„๋กœ์ ํŠธ ์˜์กด์„ฑ์„ ๊ด€๋ฆฌ, ์—…๋ฐ์ดํŠธ ๋ฐ ์ •๋ฆฌํ•˜๋Š” ํ˜„๋Œ€์ ์ธ CLI ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. **npm**, **pnpm**, **yarn**์„ ์ง€์›ํ•˜๋ฉฐ, ์ง๊ด€์ ์ธ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ UI์™€ ๊ฐ•๋ ฅํ•œ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๋” ๋น ๋ฅด๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ## ๐Ÿค– ์™œ Packmate์ธ๊ฐ€์š”? - **โšก ์„ฑ๋Šฅ**: ์บ์‹œ์™€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ™œ์šฉํ•ด ๋ฐ˜๋ณต ์‹คํ–‰ ์†๋„๋ฅผ ๊ฐœ์„  - **๐ŸŽฏ ์ •ํ™•์„ฑ**: ๊ฐœ๋ฐœ ๋„๊ตฌ ์ธํ…”๋ฆฌ์ „์Šค์™€ ๊ต์ฐจ ๊ฒ€์ฆ ๊ธฐ๋ฐ˜์˜ ๋ฏธ์‚ฌ์šฉ ํŒจํ‚ค์ง€ ํƒ์ง€ - **๐Ÿ›ก๏ธ ์•ˆ์ „์„ฑ**: ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์Šค๋งˆํŠธ ํด๋ฐฑ, ๋ฏธ์‚ฌ์šฉ ํŒจํ‚ค์ง€๋Š” ์—…๋ฐ์ดํŠธ ์ œ์™ธ - **๐ŸŽจ ๋ช…๋ฃŒ์„ฑ**: ๊ทธ๋ฃน๋ณ„ UI ์„ธ์…˜ (Patch/Minor/Major) ๋ฐ ์ƒ‰์ƒ ์ฝ”๋”ฉ ์—…๋ฐ์ดํŠธ - **๐Ÿ”ง ์œ ์—ฐ์„ฑ**: `packmate.config.json`์„ ํ†ตํ•œ ์™„์ „ํ•œ ์„ค์ • ์ง€์› - **๐ŸŒ ํ˜„๋Œ€์ **: ๊น”๋”ํ•˜๊ณ  ์ „๋ฌธ์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ง๊ด€์ ์ธ ์›Œํฌํ”Œ๋กœ์šฐ ## ๐Ÿš€ ์ฃผ์š” ๊ธฐ๋Šฅ ### ์„ฑ๋Šฅ ๋ฐ ์ตœ์ ํ™” - **3๋‹จ๊ณ„ ์บ์‹ฑ ์‹œ์Šคํ…œ**: ๋ฉ”๋ชจ๋ฆฌ โ†’ ๋””์Šคํฌ (1์‹œ๊ฐ„ TTL) โ†’ ๋„คํŠธ์›Œํฌ - ์ฒซ ์‹คํ–‰: ํ‘œ์ค€ ์†๋„ - ๋‘ ๋ฒˆ์งธ ์‹คํ–‰: ์บ์‹œ๋œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๋ฐ์ดํ„ฐ๋กœ ๋” ๋น ๋ฅด๊ฒŒ ๋™์ž‘ - **๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ**: ํŒŒ์ผ ์Šค์บ”์„ ์œ„ํ•œ ๋ฉ€ํ‹ฐ์ฝ”์–ด CPU ํ™œ์šฉ (**2-4๋ฐฐ ๋น ๋ฆ„**) - **์ ์‘ํ˜• ๋™์‹œ์„ฑ**: CPU ์ฝ”์–ด ๊ธฐ๋ฐ˜ ๋™์  ์š”์ฒญ ์ œํ•œ (8-16 ๋™์‹œ ์š”์ฒญ) ### ์Šค๋งˆํŠธ ํƒ์ง€ - **ํ–ฅ์ƒ๋œ ๋ฏธ์‚ฌ์šฉ ํŒจํ‚ค์ง€ ํƒ์ง€**: - ๋™์  import ํƒ์ง€: `import('module')` - ์กฐ๊ฑด๋ถ€ require ํƒ์ง€: `try-catch`, `if` ๋ธ”๋ก - DevDependencies ์ธํ…”๋ฆฌ์ „์Šค: ๋นŒ๋“œ ๋„๊ตฌ, ๋ฆฐํ„ฐ, ํƒ€์ž… ์ •์˜ ์ธ์‹ - ๊ต์ฐจ ๊ฒ€์ฆ: precinct + depcheck๋กœ ๋†’์€ ์‹ ๋ขฐ๋„ - **์—…๋ฐ์ดํŠธ ํƒ์ง€**: - Patch/Minor/Major๋ณ„ ๊ทธ๋ฃนํ™” ๋ฐ ์ƒ‰์ƒ ์ฝ”๋”ฉ - ๋ฏธ์‚ฌ์šฉ ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธ๋ณด๋‹ค ๋จผ์ € ํŒ๋‹จ - ๋ณด์•ˆ ๊ถŒ๊ณ ๊ฐ€ ์žˆ๋Š” direct ์˜์กด์„ฑ ์—…๋ฐ์ดํŠธ ํ›„๋ณด ํ‘œ์‹œ - Semver ๊ธฐ๋ฐ˜ ๋ฒ„์ „ ๋น„๊ต - **์„ค์น˜ ํƒ์ง€**: ์„ ์–ธ๋˜์—ˆ์ง€๋งŒ ์„ค์น˜๋˜์ง€ ์•Š์€ ํŒจํ‚ค์ง€ ์ฐพ๊ธฐ ### ๋›ฐ์–ด๋‚œ UI/UX - **๊ทธ๋ฃน๋ณ„ UI ์„ธ์…˜**: - ๐Ÿ”น **Patch ์—…๋ฐ์ดํŠธ** (๋…น์ƒ‰): ๋ฒ„๊ทธ ์ˆ˜์ •, ์•ˆ์ „ํ•˜๊ฒŒ ์—…๋ฐ์ดํŠธ - ๐Ÿ”ธ **Minor ์—…๋ฐ์ดํŠธ** (๋…ธ๋ž€์ƒ‰): ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ, ํ•˜์œ„ ํ˜ธํ™˜์„ฑ ์œ ์ง€ - ๐Ÿ”ถ **Major ์—…๋ฐ์ดํŠธ** (๋นจ๊ฐ„์ƒ‰): ์ฃผ์š” ๋ณ€๊ฒฝ์‚ฌํ•ญ, ๊ฒ€ํ†  ํ•„์š” - ๐Ÿ—‘๏ธ **๋ฏธ์‚ฌ์šฉ ํŒจํ‚ค์ง€**: ๋†’์Œ/์ค‘๊ฐ„ ์‹ ๋ขฐ๋„ ๋ ˆ๋ฒจ - ๐Ÿ“ฅ **๋ฏธ์„ค์น˜ ํŒจํ‚ค์ง€**: ๋ˆ„๋ฝ๋œ ์„ ์–ธ ์˜์กด์„ฑ - ๐Ÿ›ก๏ธ **๋ณด์•ˆ ๊ถŒ๊ณ **: direct/transitive ๊ถŒ๊ณ  ๊ตฌ๋ถ„ - **์•ˆ์ „ ๊ธฐ๋Šฅ**: - Major ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ํ™•์ธ ํ”„๋กฌํ”„ํŠธ - ์ฃผ์š” ๋ณ€๊ฒฝ์‚ฌํ•ญ ๊ฒฝ๊ณ  - ๋ช…ํ™•ํ•œ ์ž‘์—… ์š”์•ฝ - **์‹œ๊ฐ์  ๊ฐœ์„ **: - ์ƒ‰์ƒ ์ฝ”๋”ฉ๋œ ๋ฒ„์ „ ๋ณ€๊ฒฝ - ๋ถ„์„ ์ค‘ ๋ฉˆ์ถ˜ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š๋„๋ก ์ง„ํ–‰ ์ƒํƒœ ํ‘œ์‹œ - ๊ฐ„๊ฒฐํ•œ ๋ถ„์„ ์š”์•ฝ๊ณผ ์ตœ์ข… ์ž‘์—… ๊ฒ€ํ†  ### ์„ค์ • ๋ฐ ์œ ์—ฐ์„ฑ - **์Šค๋งˆํŠธ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ํƒ์ง€**: - ๋ฝ ํŒŒ์ผ์—์„œ ์ž๋™ ํƒ์ง€ (pnpm-lock.yaml, yarn.lock, package-lock.json) - ์„ค์น˜ ์ƒํƒœ ํ™•์ธ - ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋งค๋‹ˆ์ €๋กœ ์ž๋™ ํด๋ฐฑ ๋ฐ ์œ ์šฉํ•œ ํŒ ์ œ๊ณต - **์„ค์ • ์˜ต์…˜**: - ์ปค์Šคํ…€ ๋ฌด์‹œ ํŒจํ„ด (glob ์ง€์›) - ๋ถ„์„ ๋ชจ๋“œ (conservative/moderate/aggressive) - UI ์ปค์Šคํ„ฐ๋งˆ์ด์ง• (๊ธฐ๋ณธ ์„ ํƒ, ์ƒ‰์ƒ ์Šคํ‚ด) - ์บ์‹œ ์„ค์ • (๊ธฐ๊ฐ„, ์œ„์น˜) ## ๐Ÿ’พ ์„ค์น˜ ```sh npm install -g packmate # ๋˜๋Š” pnpm add -g packmate # ๋˜๋Š” yarn global add packmate ``` ์ฆ‰์‹œ ์‹คํ–‰: ```sh npx packmate ``` ## ๐Ÿ“ ์‚ฌ์šฉ๋ฒ• ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์‹คํ–‰ํ•˜์„ธ์š”: ```sh packmate ``` **์ผ๋ฐ˜์ ์ธ ์›Œํฌํ”Œ๋กœ์šฐ ์˜ˆ์‹œ:** ```sh โ”Œ ๐Ÿ“ฆ Packmate: Dependency Updates & Cleanup โ”‚ โ—‡ Multiple lock files found. Which package manager should PackMate use? โ”‚ pnpm Analysis Summary Category Count Details Updates 7 Available package updates Unused 1 Possible cleanup candidates Missing 0 Declared but not installed Current 9 Already up-to-date Security 2 advisories 1 direct, 1 transitive ๐Ÿ—‘๏ธ Unused Packages (High Confidence: 1) Likely safe to remove โ”‚ โ—‡ Select packages to remove: โ”‚ none Security Risk: High (1) Update recommended โ”‚ โ—‡ Select security updates: โ”‚ lodash 2 advisories ๐Ÿ”ถ Major Updates (3) โš ๏ธ Breaking changes possible - Review carefully โ”‚ โ—‡ Select major updates (caution required): โ”‚ none Review Actions Security updates (1) - lodash (high) Updates (2) - fs-extra โ†’ 11.3.5 - js-yaml โ†’ 4.1.1 โ”‚ โ—‡ Proceed with 3 action(s)? โ”‚ No โ”‚ No changes were made. โ”‚ โ”” Packmate complete! ๐ŸŽ‰ ``` ## โš™๏ธ ์š”๊ตฌ์‚ฌํ•ญ - Node.js v18 ์ด์ƒ - npm, yarn, pnpm ์ง€์› - Mac, Linux, Windows์—์„œ ์ž‘๋™ ## ๐Ÿ”‘ CLI ์˜ต์…˜ ์ถ”๊ฐ€ ์˜ต์…˜ ์—†์ด ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ packmate๋งŒ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์„ ํƒ(์—…๋ฐ์ดํŠธ, ์ œ๊ฑฐ, ์„ค์น˜)์€ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ## โš™๏ธ ์„ค์ • Packmate๋Š” `packmate.config.json` ๋˜๋Š” `package.json`์˜ `packmate` ํ•„๋“œ๋ฅผ ํ†ตํ•ด ์„ค์ •์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ### `packmate.config.json` ์˜ˆ์‹œ: ```json { "ignorePatterns": ["@types/*", "eslint-*"], "analysisMode": { "unused": "moderate", "devDeps": true }, "ui": { "groupSessions": true, "colorScheme": "auto", "defaultChecked": { "updateAvailable": true, "unused": false, "notInstalled": true, "latest": false } }, "detection": { "dynamicImport": true, "conditionalRequire": true, "ignoreUnused": [ "eslint", "prettier", "jest", "webpack" ] } } ``` ### ์„ค์ • ์˜ต์…˜: - **ignorePatterns**: ํŒจํ‚ค์ง€ ๋ฌด์‹œ๋ฅผ ์œ„ํ•œ glob ํŒจํ„ด ๋ฐฐ์—ด (์˜ˆ: `["@types/*"]`) - **analysisMode.unused**: ํƒ์ง€ ๋ชจ๋“œ - `"conservative"` | `"moderate"` | `"aggressive"` - **analysisMode.devDeps**: devDependencies๋ฅผ ๋ณ„๋„๋กœ ๋ถ„์„ํ• ์ง€ ์—ฌ๋ถ€ - **ui.groupSessions**: ๊ทธ๋ฃน๋ณ„ UI ์„ธ์…˜ ํ™œ์„ฑํ™” (Patch/Minor/Major) - **ui.defaultChecked**: ๊ฐ ํŒจํ‚ค์ง€ ์œ ํ˜•์˜ ๊ธฐ๋ณธ ์„ ํƒ ์ƒํƒœ - **detection.dynamicImport**: ๋™์  import ํƒ์ง€ ํ™œ์„ฑํ™” - **detection.conditionalRequire**: ์กฐ๊ฑด๋ถ€ require ํƒ์ง€ ํ™œ์„ฑํ™” - **detection.ignoreUnused**: ๋ฏธ์‚ฌ์šฉ ํƒ์ง€์—์„œ ํ•ญ์ƒ ๋ฌด์‹œํ•  ํŒจํ‚ค์ง€ ๋ชฉ๋ก ### ์บ์‹œ ๊ด€๋ฆฌ Packmate๋Š” ๋” ๋น ๋ฅธ ํ›„์† ์‹คํ–‰์„ ์œ„ํ•ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์‘๋‹ต์„ ์ž๋™์œผ๋กœ ์บ์‹œํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์บ์‹œ๋ฅผ ์ง€์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ```bash # Windows del /q %TEMP%\packmate-cache\* # Linux/Mac rm -rf /tmp/packmate-cache/* ``` ์บ์‹œ ์œ„์น˜: - Windows: `C:\Users\<user>\AppData\Local\Temp\packmate-cache` - Linux/Mac: `/tmp/packmate-cache` ## ๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ ๊ธฐ์—ฌ๋Š” ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ์ด์Šˆ๋ฅผ ์—ด๊ฑฐ๋‚˜ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ œ์ถœํ•ด ์ฃผ์„ธ์š”. ## ๐Ÿ’ณ ๋ผ์ด์„ ์Šค [MIT](LICENSE) --- <p align="center"> Made with โค๏ธ by <a href="https://github.com/ljlm0402">AGUMON</a> ๐Ÿฆ– </p>