Какие конфиги настраивал

Ответ

Настраивал конфиги для сборки проектов:

  • Webpack (оптимизация, разделение чанков, настройка лоадеров для JS/TS, CSS, изображений)
  • Babel (пресеты для поддержки старых браузеров, полифиллы)
  • ESLint/Prettier (правила кодстайла, автоматическое форматирование)
  • PostCSS (автопрефиксер, кастомные свойства)
  • Jest/Vitest (конфигурация тестов, моки, coverage)

Пример webpack.config.js:

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.[contenthash].js',
    path: path.resolve(__dirname, 'dist'),
  },
  module: {
    rules: [
      {
        test: /.js$/,
        exclude: /node_modules/,
        use: 'babel-loader',
      },
    ],
  },
};

Ответ 18+ 🔞

Да ты посмотри на эту хуйню! Сижу я значит, как последний лох, настраиваю эти конфиги для сборки. Чувствую себя каким-то цифровым шаманом, который пытается уговорить кучу железок и софта не выёбываться и работать вместе.

Вот берёшь, например, Webpack. Ну, вроде и инструмент норм, но блядь, чтобы заставить его делать то, что тебе надо, а не то, что он хочет, нужно написать такую портянку в webpack.config.js, что волосы дыбом встают. Весь этот треш с оптимизацией, разделением чанков, лоадерами для JS, CSS, картинок... Чувствуешь себя таксистом, который пытается впихнуть в одну машину (бандл) пять мужиков с диванами, холодильником и роялем. А они всё не помещаются, сука!

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.[contenthash].js',
    path: path.resolve(__dirname, 'dist'),
  },
  module: {
    rules: [
      {
        test: /.js$/,
        exclude: /node_modules/,
        use: 'babel-loader',
      },
    ],
  },
};

Смотришь на этот код и думаешь: "Ну вроде же логично, ёпта!". А он тебе в ответ: "А вот хуй там!". Не собралось. Потому что забыл какую-нибудь запятую в тысячной строке или версию пакета не ту подтянул. И пошло-поехало...

А этот Babel! Ебать мои старые костыли! Весь этот цирк с пресетами, чтобы твой красивый современный JS превратился в какую-то кашу для древних IE. Ставишь полифиллы, а они половину бандла съедают. Сидишь и гадаешь: "А нужен ли нам вообще этот IE? Может, послать его нахуй?". Но нет, заказчик требует.

ESLint с Prettier — это вообще отдельный вид психотерапии. Настроил правила, а он тебе каждый раз тыкает мордой в твой же код: "Тут пробел не там, тут точка с запятой лишняя, а тут, сука, кавычки не те!". Через час начинаешь ненавидеть не только код, но и себя, и того умника, который это всё придумал. Зато код как с картинки, блядь. Красивый, ровненький. И пустота в душе.

PostCSS — вроде штука полезная, автопрефиксер там, переменные CSS-ные. Но иногда он такое навставляет, что смотришь и думаешь: "Это чё за хуйня? Я такого не писал!". А это он, старается, мля, для старых браузеров.

Ну и вишенка на торте — Jest или Vitest. Настраиваешь тесты, пишешь моки, coverage... А потом запускаешь, и половина падает. Начинаешь разбираться, а там какая-то ерунда: то асинхронность не так обработал, то мок кривой. Час сидишь, два сидишь, уже готов всё удалить и написать "ВСЁ РАБОТАЕТ, Я ПРОВЕРИЛ!", но совесть не позволяет. Потому что знаешь, что эта хитрая жопа — код — обязательно выстрелит тебе в ногу на проде, если не покрыть её тестами.

В общем, настройка сборки — это как собирать мебель из IKEA, только вместо инструкции — десять разных гайдов на Stack Overflow, половина из которых устарела, а вместо болтов и шурупов — бесконечные зависимости, которые вечно конфликтуют друг с другом. Но когда всё наконец собирается без ошибок и работает — чувствуешь себя богом. Ненадолго. Потому что завтра нужно будет обновить одну библиотеку, и всё, пиздец, по новой.