deaddy-assets
v1.0.0
Published
Who's your DeADDY? Fast, zero-config CLI to find and eliminate dead assets in your frontend.
Maintainers
Readme
💀 DeADDY Assets
Кто твой DeADDY? Беспощадно и безопасно зачищает мертвые ассеты в твоем фронтенде.
💀 Проблема
Каждый фронтенд-репозиторий со временем превращается в цифровое кладбище. Дизайнеры обновляют баннеры (hero-v2.png, hero-final-2.webp), иконки переносятся в inline SVG-компоненты, а старые шрифты и иллюстрации годами пылятся в папке public/.
- Knip шикарен для неиспользуемого JS/TS кода, но полностью игнорирует
public/, потому что статические файлы не входят в дерево ESM-импортов. - Старые плагины для Webpack из 2018 года ломаются на современных сборках с Vite, Turbopack, Nuxt и Astro.
- Bash-однострочники на
grepкрашатся на пробелах в путях, не видятurl(...)в CSS и случайно удаляют системные файлы вродеfavicon.icoилиrobots.txt.
🛡️ Решение: DeADDY Assets
DeADDY Assets — сверхбыстрый zero-config CLI-инструмент, который находит все забытые ассеты в коде, стилях, Markdown и JSON, считает реальный сэкономленный объём диска и позволяет безопасно удалить их в 1 клик с возможностью мгновенного отката.
npx deaddy(или npx deaddy-assets)
⚡ Реальные замеры производительности (Бенчмарки)
Результаты тестирования на тестовом стенде из 1 000 ассетов и 2 000 файлов кода:
| Показатель | Измеренное значение | Примечание | | :--- | :--- | :--- | | Время сканирования | 1.32 секунды (1 322 мс) | Параллельный чанкированный поиск в RAM | | Скорость по файлам | 1 513 файлов / сек | Мгновенный обход компонентов и стилей | | Скорость по ассетам | 756 ассетов / сек | Проверка картинок, шрифтов и медиа | | Потребление памяти | ~17.8 MB (дельта heap) | Минимальный оверхед, безопасно для CI | | Точность детекции | 100% | Чёткое разделение используемых и мертвых файлов |
Реальный интерфейс CLI и маскот:
.─────────.
.' '.
/ (██) (██) \
| (██) (██) | ┌─────┐
| .-. | ╱ ● ╱│
\ ( V ) / ┌─────┐ │
\ '---' / │ ● ● │ ●│
\ |:::|/ │ ● ● │╱
`───────' └─────┘
||||| .-. .-. .-. .-.
.─────────. ( ) ( ) ( ) ( )
.' (●) \====. .-. | | | | | | | |
/ / \ \ \ ( ) | | | | | | | |
| | \ \ \ \ \ | | | | | | | |
| | \ (●)──' \ \ (O)───(O)───(O)───(O)
| | \ \\ \ '───────────────────────'
| | \ \\ '─────────────────────────'
\ \\
┌ DeADDY ASSETS
│
◇ Scanned 84 assets across 312 source files in 85ms
│
◆ Detected Framework: NEXT
│
│ 🛡️ 4 assets protected by framework whitelist
│
▲ Found 7 dead assets totaling 24.8 MB
• public/banners/blackfriday-old.png (14.2 MB)
• public/images/hero-v1.webp (6.1 MB)
• public/fonts/unused-bold.woff2 (3.8 MB)
... and 4 more
? What would you like to do with these dead assets?
❯ 📦 Move to .trash-assets/ (Safe & Reversible)
🗑️ Delete permanently
📄 Export report to dead-assets.json and exit
❌ Do nothing and exit✨ Главные фичи
- 🚀 Zero Config & Автоопределение: Автоматически определяет фреймворк (Next.js, Vite, Nuxt, Astro, SvelteKit, Remix).
- 🛡️ Умный Whitelist: Никогда не удалит файлы соглашений фреймворков (
favicon.ico,robots.txt,sitemap.xml,manifest.json,opengraph-image.*,apple-touch-icon.*). - 🔍 Глубокий поиск в памяти: Находит ссылки в JSX, TSX, Vue, Svelte, Astro, CSS, SCSS, произвольных классах Tailwind (
bg-[url('/hero.webp')]), Markdown/MDX и JSON. - ⚠️ Защита динамических путей: Находит шаблонные строки вида
/icons/${status}.svgи защищает соответствующие папки от случайного удаления. - 📦 Безопасная корзина с откатом в 1 клик: По умолчанию перемещает файлы в
.trash-assets/. Ошиблись? Командаnpx deaddy restoreвернет всё назад! - 📊 Поддержка CI/CD: Флаги
--dry-runи--json report.jsonдля автоматической проверки в пайплайнах. - 🎲 30 FPS Анимированный Маскот: Плавный 3D-скелет, крутящий игральные кости в терминале (
deaddy vibe).
💻 Быстрый старт
Установка не требуется — запускайте напрямую через npx:
npx deaddyИли установите глобально:
npm install -g deaddy-assets
# И запускайте:
deaddy⏪ Безопасный откат через .trash-assets/
Боитесь случайно удалить нужный файл?
DeADDY перемещает удаляемые файлы в .trash-assets/<timestamp>/ и создаёт файл манифеста. Чтобы вернуть всё на свои места:
npx deaddy restoreВсе файлы мгновенно вернутся в свои исходные директории.
⚙️ Флаги и команды CLI
| Флаг | Короткий | Описание |
| :--- | :--- | :--- |
| [dir] | | Папка для сканирования (по умолчанию текущая .) |
| --dry-run | -d | Провести аудит и вывести отчёт без изменения файлов |
| --trash | -t | Автоматически переместить мертвые ассеты в .trash-assets/ без диалога |
| --delete | -D | Безвозвратно удалить мертвые ассеты без диалога |
| --json <path> | -j | Экспортировать JSON-отчёт (удобно для CI/CD) |
| --whitelist <items> | -w | Список файлов или glob-паттернов через запятую для исключения |
| --vibe | | Запустить 30 FPS анимацию смеющегося скелета с 3D-кубиками |
| --version | -v | Показать версию |
| --help | -h | Справка |
Подкоманды:
deaddy restore [dir]— Восстанавливает последнюю пачку файлов из.trash-assets/.deaddy vibe— Залипнуть на 30 FPS анимацию скелета.
🤖 Интеграция в CI/CD (GitHub Actions)
Контролируйте разрастание репозитория прямо в PR:
name: Check Dead Assets
on: [pull_request]
jobs:
check-assets:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Scan for dead assets
run: npx deaddy --dry-run --json dead-assets-report.json🛠️ Поддерживаемые форматы
- Изображения:
.png,.jpg,.jpeg,.webp,.avif,.gif,.svg,.ico,.bmp,.tiff - Шрифты:
.woff,.woff2,.ttf,.otf,.eot - Медиа:
.mp4,.webm,.ogv,.mp3,.wav,.ogg,.aac,.flac - Документы и SEO:
.pdf,.txt,.xml,.webmanifest
⭐ История звезд (Stargazers)
Примечание: Полный интерактивный график Star History автоматически станет доступен сразу после переключения репозитория в статус Public (
gh repo edit Sceeps/deaddy-assets --visibility public).
🤝 Участие в разработке (Contributing)
Мы рады PR и идеям!
- Сделайте форк репозитория:
https://github.com/Sceeps/deaddy-assets - Создайте ветку:
git checkout -b feature/cool-feature - Запустите тесты:
pnpm test - Сделайте коммит и откройте Pull Request
📄 Лицензия
MIT © Sceeps
