Статьи
Типизация as const
25 September, 2025
Строгая типизация и неизменяемость объектов в TypeScript: как с помощью as const и satisfies проверять правильность полей и фиксировать значения литералов.
Модульность и видимость экспортов
26 August, 2025
Экспорты из модулей видны глобально, перегружают автодополнение в IDE и мешают инкапсуляции кода — разбор проблемы и возможные обходные пути.
Запуск TypeScript напрямую в Node.js
21 August, 2025
Как запускать TypeScript-файлы напрямую, без промежуточной транспиляции, используя современные версии Node.js.
Telegram Mini Apps: быстрый старт
19 August, 2025
Как быстро создать Telegram Mini App — простая регистрация бота через BotFather и ссылка на ваш сайт.
Отслеживание метрик и зависимостей JS-проектов в GitHub
05 August, 2025
Веб-сервис для отслеживания метрик и зависимостей GitHub-репозиториев: звёзды, форки, issues, зависимости. Быстрая настройка, локальное хранение, никакого развёртывания — простой и наглядный дашборд для ваших пет-проектов.
ESLint плагины: pinia
31 July, 2025
Плагин для ESLint, который помогает следить за стилем и архитектурой сторов Pinia. Поддерживает рекомендованные правила, проверку структуры и нейминг.
ESLint плагины: markdownlint
29 July, 2025
Плагин для ESLint, который проверяет Markdown-файлы по правилам markdownlint. Удобен при работе с документацией, README и статьями. Поддерживает конфигурацию, свои правила и autofix.
ESLint плагины: compat
24 July, 2025
ESLint-плагин, который проверяет совместимость вашего кода с целевыми браузерами. Простое подключение, поддержка polyfill'ов, настройка через browserslist.
Автоматические size-метки для Merge Request в GitLab CI
22 July, 2025
Как автоматически выставлять метки size/M и size/XL в Merge Request в GitLab CI на основе количества изменений.
Почему можно (и нужно) отказаться от Prettier
17 July, 2025
Отказ от Prettier — почему популярный форматтер кода теряет актуальность и как ESLint стал удобной и гибкой альтернативой.
Как я написал свой Stylelint-плагин
15 July, 2025
Как создать собственный Stylelint-плагин: от базового API до поддержки autofix. Обрабатываем CSS-токены и избавляемся от ручной замены значений с помощью PostCSS.
Vue, TypeScript и импортированные типы: что может пойти не так?
10 July, 2025
Почему Vue-компоненты в defineProps работают некорректно с импортированными типами? Как работает компиляция props, и почему помогает локальное объявление типов.
Альтернатива Postman и Insomnia
08 July, 2025
Postman и Insomnia стали перегруженными и обросли платными функциями. Новая альтернатива — Yaak. Лёгкий REST-клиент с базовым набором функций.
Скачиваем приложение с RuStore без регистрации
03 July, 2025
Скачать APK из RuStore без регистрации через официальный API: как получить информацию о приложении и скачать APK с RuStore.
Поиск влитых git-веток и связанных задач
01 July, 2025
Как находить влитые git-ветки и проверять связанные задачи в трекере. Упрощает очистку репозитория после релизов и помогает не потерять важное.
Добавление иконки перед ссылкой
27 June, 2025
Как с помощью CSS автоматически добавлять иконки к ссылкам на внешние ресурсы — без JavaScript и с учётом безопасности.
Быстрая очистка node_modules
25 June, 2025
Как с помощью npkill находить и удалять папки node_modules одним нажатием — освобождая гигабайты дискового пространства за пару минут.
Типизированные customEvents
23 June, 2025
Как реализовать типизированный CustomEvent-сервис на Vue с автодополнением, строгими типами и поддержкой useEventListener из VueUse.
Spellcheck для любого текста
20 June, 2025
Как настроить проверку орфографии в коде с помощью cspell — поддержка русского и английского, словари, маски и интеграция в проект.
Очистка node_modules от устаревших полифилов
18 June, 2025
Как найти и удалить устаревшие полифилы из node_modules с помощью nolyfill, чтобы ускорить установку, сборку и запуск JavaScript-проекта.
Pinia: запрет неявной мутации state
16 June, 2025
Как запретить неявную мутацию состояния в Pinia с помощью TypeScript, чтобы изменения были явными и контролируемыми, улучшая стабильность приложения.
Агрегатор информации по доменным зонам
13 June, 2025
Удобный агрегатор tld-list собирает цены, условия и возможности WHOIS privacy по доменным зонам, чтобы легко выбрать лучший регистратор и тариф.
Pinia: стоит ли использовать setup store
11 June, 2025
Разбираемся, стоит ли использовать setup store в Pinia: плюсы, ограничения и почему option store пока остаётся надёжным выбором для большинства проектов.
Переход с CommonJS на ESM
09 June, 2025
Почему стоит перейти с CommonJS на ESM, какие преимущества даёт новый формат модулей и когда миграция может вызвать проблемы.
Аннотации над текстом с тегом ruby
06 June, 2025
Как добавить надстрочные пояснения к словам с помощью тега <ruby>. Применяется как для японского, китайского, так и любых других языков.
Типизация querySelector
04 June, 2025
Улучшенная типизация querySelector и querySelectorAll с typed-query-selector для точного вывода типов элементов на основе CSS-селекторов в TypeScript.
Улучшение дефолтного поведения TypeScript
02 June, 2025
Утилита ts-reset улучшает стандартную типизацию TypeScript, делая API строже и безопаснее без изменения существующего корректного кода.
Автообновление npm зависимостей
28 May, 2025
Удобный способ автоматического обновления npm-зависимостей с помощью npm-check-updates: больше контроля, фильтры и интерактивность для простого поддержания актуальности проекта.