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

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

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

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

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

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

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

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

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

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

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

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

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

Разработка

  • Android1 858
  • iOS1 698
  • Fullstack вакансии996
  • AI вакансии955
  • Frontend вакансии755
  • Mobile вакансии44

По стеку

  • Go8 752
  • Java6 593
  • Node.js2 036
  • .NET1 739
  • Kotlin1 618
  • Rust1 472
  • C#717
  • PHP690
  • C++579

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

  • Kubernetes7 787
  • DevOps вакансии6 095
  • Linux-инфраструктура5 508
  • Terraform / IaC4 287
  • CI/CD3 272
  • Мониторинг и Observability1 792
  • SRE566
  • Кибербезопасность454

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

  • Data Scientist1 138
  • Бизнес-аналитик921
  • Аналитик данных858
  • Системный аналитик154

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

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

По регионам

  • Вакансии в США44 166
  • Вакансии в Европе24 014
  • Вакансии в Канаде4 535
  • Работа в России3 867

По формату

  • Удалённые вакансии75 005
  • Релокация в США44 166
  • Гибридная работа12 485
  • Офисная работа7 090

По уровню

  • Senior вакансии42 643
  • Middle вакансии20 960
  • Junior вакансии6 708

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis38 вакансий
  • Spotify37 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

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

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

Как Tailwind удаляет неиспользуемый CSS в продакшне (purging/tree-shaking)?

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

Tailwind v3+ генерирует только те классы, которые найдены в файлах из content-конфига. В v4 анализ ещё умнее — сканируются все импортированные файлы автоматически. Итоговый CSS в продакшне составляет 5–20 КБ.

Конфигурация content в v3

// tailwind.config.js
module.exports = {
  content: [
    './src/**/*.{html,js,jsx,ts,tsx,vue}',
    './pages/**/*.{js,ts,jsx,tsx}',
    './components/**/*.{js,ts,jsx,tsx}',
    // Для Storybook
    './.storybook/**/*.{js,jsx,ts,tsx}',
    // Внешние пакеты, использующие Tailwind
    './node_modules/@my-company/ui/dist/**/*.js',
  ],
};

Удаление неиспользуемого CSS в Tailwind

Tailwind не включает все возможные утилиты в сборку — вместо этого он сканирует исходные файлы и генерирует CSS только для тех классов, которые там встречаются. В v2 это называлось «purging», в v3+ — «content scanning» или «JIT (Just-in-Time) mode».

Как работает сканирование

Tailwind ищет в файлах строки, похожие на CSS-классы, через регулярное выражение — без разбора AST. Это значит, что класс будет найден, только если он присутствует в файле целиком в виде строки.

// ХОРОШО — класс есть целиком
const cls = 'bg-red-500';
const el = <div className="text-blue-600 font-bold"></div>;

// ПЛОХО — динамическая сборка строки
const color = 'red';
const cls = `bg-${color}-500`; // bg-red-500 НЕ будет найден!

Safelist для динамических классов

// tailwind.config.js
module.exports = {
  content: ['./src/**/*.{js,ts,jsx,tsx}'],
  safelist: [
    // Явные классы
    'bg-red-500',
    'text-green-600',
    // Паттерны для всего диапазона
    {
      pattern: /bg-(red|green|blue)-(100|500|900)/,
      variants: ['hover', 'focus', 'md'],
    },
  ],
};

Tailwind v4: автоматическое сканирование

/* globals.css — v4 */
@import "tailwindcss";

/* v4 автоматически сканирует все файлы, импортированные в сборщик.
   Явный content-конфиг не нужен для большинства проектов. */

/* Если нужно добавить дополнительные пути: */
@source "../node_modules/@my-company/ui/src";

/* Добавить классы в safelist: */
@source inline("bg-red-500 bg-green-500 bg-blue-500");

Проверка размера итогового CSS

// Сборка с анализом (Vite)
// vite.config.ts
import { defineConfig } from 'vite';

export default defineConfig({
  build: {
    rollupOptions: {
      output: {
        // Можно проверить в dist/assets/*.css
      },
    },
  },
});
// package.json — анализ через команду
{
  "scripts": {
    "build:analyze": "npx tailwindcss -i ./src/input.css -o ./dist/output.css --minify && wc -c ./dist/output.css"
  }
}

Типичный итоговый размер

  • Среднее SPA-приложение: 8–15 КБ (gzip)
  • С типографикой (@tailwindcss/typography): +3–5 КБ
  • Для сравнения: Bootstrap full = ~22 КБ, полный Tailwind без purge = ~3 МБ

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

  • Динамически собранные имена классов (`bg-${color}-500`) не попадают в сборку — нужен safelist или полные имена в объекте маппинга.
  • Файлы из node_modules не сканируются по умолчанию в v3 — если используете UI-библиотеку с Tailwind-классами, добавьте её путь в content.
  • Опечатка в пути glob (**.tsx вместо **/*.tsx) приведёт к тому, что файлы не сканируются — CSS будет почти пустым.
  • В v3 JIT работает по умолчанию, но в старых v2 нужно явно включать — убедитесь в версии.
  • HTML-шаблоны в PHP, Ruby ERB, Blade должны быть добавлены в content явно — иначе классы из них не попадут в сборку.
  • CSS-модули (*.module.css) тоже нужно добавлять в content, если в них используются Tailwind-классы через @apply.
  • Паттерн /bg-\w+-\d+/ в safelist может включить сотни классов — уточняйте паттерны максимально конкретно.

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

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

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

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

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

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

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

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

Источники

  • https://tailwindcss.com/docs/detecting-classes-in-source-files
←Предыдущий вопросЧем Tailwind CSS v4 отличается от v3 (новый CSS-native подход)?Следующий вопрос→Что такое `@theme` в Tailwind CSS v4 и как он заменяет JS-конфиг файл?

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

Tailwind CSSbuild-toolsperformance-debugging