Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 210новых вакансий за сутки·93 612вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 266
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 401 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 126
  • Облачные технологии14 083
  • QA вакансии3 456
  • Backend вакансии2 115
  • Инженер данных1 809
  • Продакт-менеджер1 261

Разработка

  • Android1 862
  • iOS1 700
  • Fullstack вакансии986
  • AI вакансии950
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 688
  • Java6 537
  • Node.js2 026
  • .NET1 722
  • Kotlin1 611
  • Rust1 458
  • C#710
  • PHP682
  • C++571

DevOps и инфраструктура

  • Kubernetes7 772
  • DevOps вакансии6 054
  • Linux-инфраструктура5 493
  • Terraform / IaC4 275
  • CI/CD3 239
  • Мониторинг и Observability1 790
  • SRE568
  • Кибербезопасность458

Аналитика и данные

  • Data Scientist1 143
  • Бизнес-аналитик923
  • Аналитик данных857
  • Системный аналитик152

Другие направления

  • Проджект-менеджер620
  • UI/UX дизайн146
  • Ручное тестирование14

По регионам

  • Вакансии в США44 276
  • Вакансии в Европе23 819
  • Вакансии в Канаде4 471
  • Работа в России3 904

По формату

  • Удалённые вакансии74 928
  • Релокация в США44 273
  • Гибридная работа12 388
  • Офисная работа7 083

По уровню

  • Senior вакансии42 625
  • Middle вакансии20 854
  • Junior вакансии6 721

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме Tailwind CSSВсе вопросы
Tailwind CSSSeniorКодинг

Что такое плагины Tailwind CSS и как создать пользовательский плагин?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Плагины Tailwind — функции, регистрирующие новые утилиты, компоненты или варианты через API addUtilities/addComponents. Создаются через plugin() и подключаются в tailwind.config.

Базовая структура плагина

// tailwind.config.js
const plugin = require('tailwindcss/plugin');

module.exports = {
  plugins: [
    plugin(function ({ addUtilities, addComponents, addBase, matchUtilities, theme }) {
      // Добавляем статические утилиты
      addUtilities({
        '.text-shadow': {
          textShadow: '2px 2px 4px rgba(0,0,0,0.3)',
        },
        '.text-shadow-lg': {
          textShadow: '4px 4px 8px rgba(0,0,0,0.5)',
        },
      });
    }),
  ],
};

Плагины Tailwind CSS

Плагин — это функция, которая получает набор вспомогательных методов и регистрирует собственные утилиты, компоненты, базовые стили или варианты (variants). Плагины подключаются в секции plugins конфигурационного файла.

Динамические утилиты через matchUtilities

matchUtilities позволяет создавать утилиты, которые принимают произвольные значения из темы или произвольные значения в квадратных скобках ([value]).

plugin(function ({ matchUtilities, theme }) {
  matchUtilities(
    {
      'text-shadow': (value) => ({
        textShadow: value,
      }),
    },
    { values: theme('textShadow') }
  );
})

После этого можно писать text-shadow-md (из темы) или text-shadow-[0_2px_4px_red] (произвольное значение).

Добавление компонентов

plugin(function ({ addComponents }) {
  addComponents({
    '.btn': {
      padding: '0.5rem 1rem',
      borderRadius: '0.375rem',
      fontWeight: '600',
      display: 'inline-flex',
      alignItems: 'center',
    },
    '.btn-primary': {
      backgroundColor: '#3b82f6',
      color: '#ffffff',
      '&:hover': {
        backgroundColor: '#2563eb',
      },
    },
  });
})

Плагин с опциями

// my-plugin.js
const plugin = require('tailwindcss/plugin');

module.exports = plugin.withOptions(
  function (options = {}) {
    return function ({ addUtilities }) {
      const prefix = options.prefix || 'custom';
      addUtilities({
        [`.${prefix}-center`]: {
          display: 'flex',
          alignItems: 'center',
          justifyContent: 'center',
        },
      });
    };
  },
  function (options = {}) {
    // Расширение темы через второй аргумент
    return {
      theme: {
        extend: {
          spacing: {
            '128': '32rem',
          },
        },
      },
    };
  }
);

// tailwind.config.js
module.exports = {
  plugins: [
    require('./my-plugin')({ prefix: 'flex' }),
  ],
};

Добавление кастомных вариантов

plugin(function ({ addVariant }) {
  // Вариант для :nth-child(odd)
  addVariant('odd', '&:nth-child(odd)');
  // Вариант для data-атрибута
  addVariant('data-active', '&[data-active]');
  // Вариант для родительского состояния
  addVariant('group-hovered', ':merge(.group):hover &');
})

После регистрации можно использовать: odd:bg-gray-100, data-active:text-blue-500.

Публикация плагина как npm-пакета

// package.json
{
  "name": "tailwindcss-text-shadow",
  "main": "index.js",
  "peerDependencies": {
    "tailwindcss": ">=3.0.0"
  }
}

Подводные камни

  • Статические утилиты из addUtilities не поддерживают произвольные значения в квадратных скобках — для этого нужен matchUtilities.
  • CSS-свойства в объектах плагина указываются в camelCase (textShadow), а не в kebab-case — иначе свойство молча игнорируется.
  • Плагины, добавляющие утилиты через addUtilities, по умолчанию не получают все варианты (hover, focus и т.д.) — нужно явно передать { variants: ['hover', 'focus'] } вторым аргументом (в v3) или использовать matchUtilities.
  • При использовании addBase стили попадают в базовый слой и не могут быть переопределены утилитами без !important — не злоупотребляйте.
  • theme() внутри плагина — это функция, а не объект; вызов theme('colors.blue') вернёт объект с оттенками, а не строку.
  • Плагин с plugin.withOptions нельзя использовать без вызова — require('./plugin') вернёт фабрику, а не сам плагин.
  • В Tailwind v4 API плагинов изменился: используется CSS-native подход с @plugin директивой, а JS-плагины подключаются иначе — проверьте совместимость.
  • Порядок плагинов важен: если два плагина регистрируют одинаковые классы, победит последний.

Частые вопросы на собеседовании

  • Что такое Tailwind CSS и что означает подход «utility-first»?
  • Каковы лучшие практики организации Tailwind-классов в больших кодовых базах?
  • Как работает адаптивный дизайн в Tailwind? Объясните префиксы breakpoints (sm, md, lg, xl, 2xl).
  • Что такое массив content в конфигурации Tailwind и почему он важен?

Типичные ошибки

  • Смешивать «плагины Tailwind» с похожим механизмом без критерия выбора.
  • Игнорировать риск: неверно оценить границы применения темы «плагины Tailwind» и получить хрупкое решение.
  • Показывать только синтаксис и не объяснять поведение в runtime или сборке.

Что проверяет интервьюер

  • Объясняет расширение framework новыми utilities, variants или компонентными классами.
  • Показывает на примере, как работает: плагин добавляет CSS в генератор Tailwind и должен быть связан с токенами темы, чтобы не создать параллельную неподдерживаемую систему стилей.
  • Называет production-нюанс и граничный случай для темы «плагины Tailwind».

Как вы знаете этот вопрос?

Проверить себя по теме Tailwind CSS →

Источники

  • https://tailwindcss.com/docs/plugins

Связанные темы

Tailwind CSScss-architecturelibrary-design