Как ускорить написание повторяющегося кода в 10 раз

Привет, Хабр! Меня зовут Никита и я пишу сайты на React.
Эта статья — про создание шаблонов для ускорения написания кода, знакомство с двумя расширениями для VSCode, которые помогают создавать новые папки/файлы на потоке — то есть много и часто. Возможно, эти плагины пригодятся и вам.
В статье разберём:
Проблему
Какие есть решения
Плагины для VSCode
Немного теории и практики
Заключение
Проблема: Рутина замедляет прогресс

Часто приходится заниматься создании множества однотипных компонентов, включающих в себя React-компонент, индексный файл, файл с типами, стили, кастомные хуки, тесты, storybook и т.д. Каждый новый компонент — это несколько файлов, которые нужно создавать вручную, следя за соблюдением единого стиля и структуры проекта.
Самый простой наш компонент обычно выглядит так:

CustomComponent.module.css
— стилиCustomComponent.tsx
— реализация компонентаCustomComponent.types.ts
— определение типовindex.ts
— точка входа
Даже создание такой простой структуры занимает около 1–1.5 минуты, в то время как шаблон позволяет сделать это за 10–15 секунд. А если компонент сложный, с глубокой вложенностью и логикой, время увеличивается многократно.
Какие есть решения

Если нет желания сильно париться вот основные подходы:
Генераторы шаблонов:
Plop
Hygen
Расширения VS Code:
Folder Templates
Почему стоит выбрать Folder Templates вместо Plop/Hygen:
Минимум конфигурации — максимум пользы
В отличие от Plop и Hygen, Folder Templates не требует сложной настройки в JavaScript. Шаблон — это просто папка с файлами и небольшой конфигурационный файл.Интуитивно понятно
Документация проста и понятна, начать работать можно уже через 5 минут.Проста генерации вложенных структур
Вы просто создаете структуру папок и файлов, которую хотите получить, а расширение копирует ее, заменяя плейсхолдеры на нужные значенияНе требует зависимости от Node.js
Folder Templates работает без необходимости установки дополнительных зависимостей через npm. Это может быть плюсом в проектах, где хочется обойтись без npm-скриптов.
Plop/Hygen будет уместен, если вам нужны:
Сложная логика генерации (например, модификация уже существующих файлов);
Множественные шаги в сценарии генерации;
Интерактивные CLI-опросы и выбор опций.
Folder Templates: Практика создания шаблонов
Ссылочка на плагин — Folder Templates
Для создания шаблонов есть два варианта:
Создание шаблона в файловой системе
Настройка шаблона в
settings.json
VSCode
Мы рассмотрим создание шаблонов в файловой системе
Создаем папку .fttemplates
в корне проекта и сохраняем в ней необходимые шаблоны, к которым хотим получить доступ в этом проекте. Путь к этой папке можно изменить в настройках VS Code.


Значение
Внутри папки .fttemplates
создаем структуру папок и файлов. Например:

Файл .ftsettings.json
содержит настройки для вашего шаблона. Вот пример:
{
"name": "ReactComponent",
"openFilesWhenDone": [".tsx", ".module.css"],
"omitParentDirectory": false,
"overwriteExistingFiles": "never",
"customVariables": ["interfaceFirstProp", "interfaceFirstPropType=>string"]
}
Разберем параметры:
name
: Название папки, которая будет создана.openFilesWhenDone
: Список файлов, которые будут открыты в редакторе после создания компонента.omitParentDirectory
: Если установлено вtrue
, шаблон будет создан непосредственно в текущей папке. Иначе будет создана папка с именем шаблона внутри текущей папки. По умолчанию: false.overwriteExistingFiles
: Определяет, перезаписывать ли структуру, если папка с таким же именем уже существует. По умолчанию: 'never'.customVariables
: Список переменных, которые будут запрошены у пользователя при создании компонента. В данном случае, мы запрашиваем название первого пропса (interfaceFirstProp
) и его тип (interfaceFirstPropType
, по умолчанию выбралиstring
).
С остальными настройками можно познакомиться на страничке расширения.
Заглянем в структуру нашего компонента.

Пустой CSS файл.
Файл React-компонента. Здесь мы импортируем интерфейс с именем компонента и постфиксом Props, также стили из файла [FTName].module.css. Диструктурируем props interfaceFirstProp, который мы ранее определили в .ftsettings.json и ввели при создании компонента.
Файл с типами. Интерфейс состоит из 2х кастомных переменных, которые мы вводим на этапе создания компонента.
Индексный файл. Тут ничего сложного, просто импорт и последующий экспорт компонента
Чтобы создать компонент, щелкните правой кнопкой мыши по папке, в которой вы хотите создать компонент, и выберите «Create New Templated Folder» (или можно назначить горячую клавишу). Выберите шаблон, введите имя компонента и значения для кастомных переменных, если они есть.


Можно создавать любую вложенность, расширения файлов и тд.
TypeScript Barrel Generator: Автоматический экспорт модулей
Второй полезный плагин — TypeScript Barrel Generator. Он автоматизирует экспорт модулей в файл index.ts
.

Просто щелкните правой кнопкой мыши по папке и выберите «Export all modules». Плагин автоматически создаст или обновит файл index.ts
, содержащий все экспорты из файлов в этой папке. Также можно (даже нужно) добавить слушатель, чтобы плагин автоматически обновлял index.ts
при добавлении или удалении файлов.
В настройках VS Code можно выбрать формат экспорта:
export * from "./..."
— стандартный экспортexport { default as ... } from "./..."
— именованный экспорт по умолчанию
При необходимости есть возможность исключить из слушателя определенные файлы, переименовать дефолтный index.ts файл и еще пара настроек.
Заключение: Время — ценный ресурс

Использование Folder Templates в комбинации с TypeScript Barrel Generator значительно сократило время на создание компонентов. Мы устранили рутину, освободив время для более важных задач. Настройка этих инструментов и знакомство с документацией занимает немного времени, но экономия времени и повышение продуктивности стоят того.
Надеюсь, эта статья была полезна для вас. Не бойтесь экспериментировать и автоматизировать рутинные задачи — это ключ к повышению эффективности разработки!