Кастомные плагины Eleventy: разработка, тестирование и оптимизация

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Кастомные плагины Eleventy: разработка, тестирование и оптимизация
Средний
~2-3 дня
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1358
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1250
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    956
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1188
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    929
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    947

Разработка кастомного плагина Eleventy

Однажды клиент потратил две недели на ручную оптимизацию изображений при сборке — мы написали плагин за день, который автоматически генерирует WebP и AVIF. После этого проекта мы формализовали процесс и теперь предлагаем разработку плагинов под ключ. Стандартный Eleventy даёт многое, но не всё: кастомная обработка изображений, интеграция с headless CMS, мультиязычность — без плагина это превращается в копипасту и хрупкие хелперы. Плагин же даёт переиспользуемую, тестируемую логику, сокращающую время разработки и поддержки. За счёт модульности такой подход легко масштабировать: написанный однажды плагин можно использовать в десятках проектов, экономя сотни часов.

Какие проблемы решаем

  • Кастомная обработка изображений с сжатием, множеством форматов и размеров — экономия до 40% объёма сборки. В одном проекте мы снизили итоговый размер сайта с 150 МБ до 90 МБ только за счёт плагина изображений. Это привело к экономии на хостинге до 30%.
  • Интеграция с внешними API с кешированием и обработкой ошибок — подгрузка товаров из headless CMS. Плагин обрабатывает таймауты и повторы, гарантируя стабильную сборку.
  • Сложные трансформации HTML — удаление неиспользуемых стилей, добавление critical CSS, вставка метаданных. Это снижает время загрузки страницы на 20% по данным Lighthouse.
  • Мультиязычность с динамическими маршрутами и локалью в URL — плагин генерирует страницы для каждого языка, подтягивая переводы из JSON.

Без плагина эти задачи решаются разовыми скриптами, которые сложно поддерживать и тестировать. Плагин же инкапсулирует всю логику и может быть повторно использован в других проектах.

Как разработать плагин Eleventy для оптимизации изображений?

Возьмём реальный кейс: интернет-магазин на Eleventy с сотнями картинок. Нужно генерировать WebP и AVIF, делать несколько размеров, а в исходниках — прозрачные PNG. Мы написали плагин на базе @11ty/eleventy-img:

const Image = require("@11ty/eleventy-img");
const path = require("path");

module.exports = function(eleventyConfig, options = {}) {
  const cfg = {
    widths: [320, 640, 960, 1280, 1920],
    formats: ["avif", "webp", "jpeg"],
    outputDir: "./_site/assets/images/",
    urlPath: "/assets/images/",
    sharpOptions: { quality: 82 },
    ...options
  };

  eleventyConfig.addAsyncShortcode("img", async function(src, alt, sizes = "(max-width: 768px) 100vw, 1200px", classList = "") {
    const srcPath = src.startsWith("http") ? src : path.join("src", src);
    try {
      const metadata = await Image(srcPath, cfg);
      return Image.generateHTML(metadata, { alt, sizes, loading: "lazy", decoding: "async", class: classList });
    } catch (e) {
      console.warn(`[img] Ошибка: ${src}`);
      return `<img src="${src}" alt="${alt}" loading="lazy">`;
    }
  });
};

Шорткод {% img "src", "alt" %} в шаблоне генерирует <picture> с AVIF, WebP и JPG. Плагин заменяет собой ручную оптимизацию и уменьшил размер сборки на 40%. Подобный подход можно применить к любым повторяющимся задачам: от конвертации Markdown до генерации sitemap.

Как тестировать кастомный плагин Eleventy?

Для тестирования используйте Jest или Mocha. Запустите Eleventy в тестовом режиме, передав конфигурацию с плагином, и проверьте выходные файлы. Также тестируйте отдельные функции плагина: фильтры, шорткоды, асинхронные операции. Пример теста для нашего плагина:

const plugin = require('./img-plugin');
const Eleventy = require('@11ty/eleventy');

test('генерирует picture с AVIF', async () => {
  const elev = new Eleventy('./test/src', './test/_site', {
    config: function(eleventyConfig) {
      eleventyConfig.addPlugin(plugin, { widths: [640] });
    }
  });
  const result = await elev.toJSON();
  expect(result[0].content).toContain('<picture>');
});

Это гарантирует, что плагин работает корректно при изменениях. Для комплексных плагинов стоит добавить тесты на обработку ошибок: например, при недоступном внешнем API или повреждённом изображении. Используйте mock-объекты для эмуляции сетевых запросов.

Почему кастомный плагин быстрее готового?

Готовые плагины часто перегружены: включают лишний функционал, сложно конфигурируются, редко обновляются. Кастомный плагин пишется под конкретную задачу, легче поддерживается и работает быстрее за счёт отсутствия мёртвого кода. Например, готовый плагин для изображений может тащить зависимости для форматов, которые вам не нужны, а кастомный — только необходимые. Сравнение:

Характеристика Готовый плагин Кастомный плагин
Функционал Избыточный Только нужное
Конфигурация Сложная, много опций Простая, под ваши параметры
Производительность Медленнее из-за лишнего кода Оптимальная
Поддержка Зависит от автора Вы полностью контролируете

Кастомный плагин — это инвестиция в скорость и качество сборки.

Процесс работы

  1. Аналитика: разбираем текущий проект, выявляем повторяющиеся задачи.
  2. Проектирование: проектируем API плагина — входные параметры, конфиг, возвращаемые значения.
  3. Реализация: пишем код с тестами (Jest), используем async/await, обработку ошибок.
  4. Тестирование: запускаем сборку с плагином, проверяем выходные файлы.
  5. Деплой: подключаем плагин к проекту, документируем использование.

Сроки и стоимость

Тип плагина Сложность Сроки
Простой (фильтры, 2-3 шорткода) Низкая 1-2 дня
Средний (асинхронные операции, изображения) Средняя 3-5 дней
Комплексный (API, мультиязычность, тесты, npm публикация) Высокая 1-2 недели

Стоимость рассчитывается индивидуально. Оценка проекта — бесплатно. Свяжитесь с нами — мы подберём оптимальное решение под ваш бюджет.

Что входит в результат

  • Исходный код плагина с комментариями.
  • Документация по установке и настройке.
  • Тесты (Jest) для ключевых сценариев.
  • Неделя поддержки после деплоя.

Распространённые ошибки при разработке: забывают обрабатывать ошибки в асинхронных шорткодах, не проверяют типы входных данных, используют синхронные операции там, где нужны async. Наш процесс это исключает.

Мы гарантируем качество: опыт на рынке более 5 лет, 50+ реализованных проектов. Получите бесплатную консультацию — обсудим ваш проект и предложим оптимальное решение. Экономия бюджета и времени на поддержку — вот что вы получаете с кастомным плагином. Ваша выгода — снижение затрат на хостинг и ускорение разработки.

Подробнее об API Eleventy на GitHub.

Выбор типа сайта — техническая задача, а не маркетинг

Мы видим, как команды тратят бюджет на неподходящий стек. Лендинг на Next.js со статической генерацией и корпоративный сайт с CMS — принципиально разные инфраструктуры, даже если внешне похожи. Ошибка на старте ведёт к переплате за хостинг в 5–10 раз и низкой скорости загрузки. Core Web Vitals (LCP, INP, TTFB) для каждого типа сайта — свой набор приоритетов.

Ниже разберём четыре типа сайтов, их типичные технические ошибки и как мы их исправляем.

Как не ошибиться с выбором CMS?

Сайт-визитка

Самый компактный формат: 1–5 страниц, минимум динамики. Основная задача — дать контактную информацию и создать первое впечатление. Технически здесь нет сложности, но есть типичные ошибки.

Слишком тяжёлый стек. WordPress с 15 плагинами для 5 страниц — это 800ms TTFB на shared хостинге. Мы предлагаем статику: HTML/CSS/JS или Next.js с output: 'export', задеплоенное на Vercel или Cloudflare Pages. Никакого PHP, никакой базы данных — только CDN. TTFB < 50ms гарантированно. Экономия на хостинге — до 50 000 ₽ в год.

Нет контактной формы с backend-валидацией. Форма только с JS-валидацией — это декорация. Бэкенд должен валидировать, rate-limit и отправлять уведомление. Для статического сайта используем Formspree или серверлесс endpoint.

Отсутствие Schema.org разметки. Google Knowledge Panel строится на разметке LocalBusiness или Organization — адрес, телефон, часы работы. Для визитки это критично. Мы делаем её встроенной в шаблон.

Срок разработки: 2–3 недели с дизайном.

Почему скорость лендинга напрямую влияет на конверсию?

Лендинг

Лендинг — страница с одной целью: конверсия. Всё, что не ведёт к целевому действию, лишнее. Core Web Vitals здесь критичны, потому что платный трафик, а Google использует CWV как фактор в Quality Score.

Конкретный кейс: лендинг с hero-видео 8MB autoplay в MP4 без preload="none" + три сторонних скрипта аналитики синхронно в <head>. LCP 9.4s, INP 780ms. Мы заменили видео на poster image с отложенной загрузкой по scroll, скрипты перевели на async/defer и частично в Web Workers через Partytown. LCP 1.8s, INP 140ms. Конверсия выросла на 23% — только за счёт скорости, не дизайна.

A/B тестирование — стандартная практика. Google Optimize закрылся, но есть Growthbook (open source), PostHog, VWO. Для Next.js используем edge middleware для распределения трафика на уровне CDN без лишнего JS.

Срок: 2–4 недели. Закажите разработку под ключ — мы оценим ваш проект за 1 день.

Корпоративный сайт

Корпоративный — это CMS, несколько разделов, мультиязычность, интеграция с CRM. Ключевой вопрос: кто будет редактировать контент и как часто.

Если редакторы нетехнические — нужен visual editor. WordPress с Gutenberg или ACF Pro закрывает это. Для сложных структур — headless CMS (Strapi, Directus) с фронтендом на Next.js. Если сайт обновляется редко — Markdown в Git с Astro или Next.js. Деплой по push в main — никакой CMS.

Производительность. Страница «О компании» с 40 фотографиями в оригинале — LCP 12 секунд на мобильном. <Image> компонент Next.js с WebP и srcset решает без ручной работы.

Мультиязычность: Astrotomic Translatable на Laravel или next-intl / react-i18next. Структура URL — /ru/about, /en/about с hreflang.

Срок: 6–12 недель в зависимости от объёма.

Промо-сайт

Промо — временный или постоянный сайт под кампанию. Нестандартный дизайн, анимации, интерактив. Стек: GSAP, Framer Motion, Three.js, Lottie, Canvas API.

Главная ловушка — анимации, тормозящие на мобильных. GPU-анимации через transform и opacity — нормально. box-shadow в анимации, filter: blur() на каждом кадре, анимация width/height — причина 20fps на iPhone 12. will-change: transform помогает точечно.

prefers-reduced-motion — обязателен для accessibility. Мы всегда добавляем.

Срок: 3–6 недель, зависит от сложности.

Сравнительная таблица

Параметр Визитка Корпоративный Лендинг Промо
Страниц 1–5 10–50+ 1–3 1–10
CMS Не нужна Нужна Не нужна Редко
SEO-приоритет Средний Высокий Высокий Низкий
Анимации Минимум Умеренно Умеренно Интенсивно
Срок (с дизайном) 2–3 нед 6–12 нед 2–4 нед 3–6 нед

Стоимость в каждом случае рассчитывается индивидуально после изучения технического задания. — Google рекомендует TTFB под 0.8s, у нас <0.2s.

Что входит в работу

  • Аналитика и прототипирование (структура, пользовательские сценарии)
  • Дизайн-концепция (адаптивный, mobile-first)
  • Вёрстка с оптимизацией LCP, CLS, INP
  • Выбор и настройка CMS (если нужна)
  • Интеграция с CRM/маркетинговыми инструментами
  • Тестирование (кроссбраузерное, load-testing)
  • Документация и передача доступов
  • Обучение редакторов (видео + письменно)
  • Гарантия 3 месяца (бесплатные правки)

Наша экспертиза

Мы на рынке 10+ лет, реализовали 200+ проектов — от простых визиток до высоконагруженных лендингов с миллионными аудиториями. Каждый проект проходит аудит на Core Web Vitals перед релизом.

Вторая таблица: сравнение подходов

Подход TTFB (мс) Сложность поддержки Стоимость разработки
Static HTML/CSS <50 Низкая Низкая (от 50 000 ₽)
Next.js + headless CMS <200 Средняя Средняя (от 150 000 ₽)
WordPress + плагины 500–1500 Высокая Высокая (от 300 000 ₽)
Подробнее об оптимизации изображений Мы автоматически конвертируем в WebP/AVIF, генерируем srcset для всех разрешений, используем lazy loading с Intersection Observer. Для фоновых изображений — техника progressive loading.

Свяжитесь с нами, чтобы получить консультацию по вашему проекту. Закажите разработку под ключ — мы оценим сроки и бюджет за 1 день.