Как же меня сейчас разбомбило!

Итак, почему CRA это отвратительная штука:
- невозможно просто так подключить babel плагины
- заставляет юзать свой eslint-config-react-app, и env ESLINT_EXTEND
- вокруг него есть десятки расширителей rewired, customize-cra, craco…. и всё это работает не очень хорошо и имеет проблемы с обновлениями CRA
- он насильно исправляет tsconfig при запуске (WTF?)
- подключить postcss плагин уже проблема
- env переменные обязаны начинаться с REACT_APP_

Я думаю вы сможете накидать ещё десятки комментариев о проблемах с CRA. Но у меня весь процесс “БЫСТРОГО” старта выглядит так:
1. yarn create react-app my-app
2. исправить все косяки CRA (3-4 коммита)
3. писать немного код
4. понять, что нехватает расширения
5. пытаться жить с craco/rewired+customize-cra
6. получить какой-то баг при обновлении
7. сделать eject и исправить всё что нужно руками
8. переписать все конфиги

Итого, просто на мучения с CRA в сумме уходит несколько рабочих дней и 2000±500 строк изменений. Это неправильно. Такую систему невозможно называть УДОБНОЙ или УПРОЩАЮЩЕЙ. Оно даже для старта ничего не упрощает.

Зачем было навязывать свои еслинт плагины?
В чем проблема сделать как Razzle? Он решает одну задачу — конфигурирует webpack для SSR, и делает её очень хорошо. При этом позволяя легко кастомизировать и расширять любую часть, что бабель, что вебпак, что энвы, что еслинт.
Но авторы CRA это дичайшие вахтеры, навязали десятки спорных решений, и называют это хорошим решением для новичка. Притом новичок не может использовать инструменты вроде eslint и postcss по документации этих инструментов, CRA ломает использование инструментов.

Так не должно быть. Я собираю голоса на создание нормального инструмента для бутстрапинга react приложений. Пишите в комментариях всё, что думаете про CRA и его проблемы. Какие плюсы лично вам нравятся в CRA и их нужно перенести в адекватную реализацию?

8 comments

Ясно, джун.
CRA не для разработки.
Я вообще всегда воспринимал cra как быстрый старт прототипа для проверки гипотезы, но никак не разрабатывать, поэтому хейта не понимаю. Однако там действительно много спорных моментов и можно было сделать лучше
С любым cli так, лучше вообще не пытаться сделать ака bootstraping tools какой то, а лучше собрать в одном месте заметки по типу how to, начиная с минимального набора для старта, webpack + testing + linting + hmr + building и дополнять его. Если знаешь как оно работает внутри, то собрать самому конфиг проекта не проблема. Большинство страдающих с cli не знают основ и документацию инструментов (линтинг, тесты, трансформации кода по пути билдинга) и лезут туда в крайнем случае, нужно прививать другую привычку - с самого старта опираться на доки. Что проще поддерживать: такие how to доки или cli (еще один черный ящик) + доки для cli? Что лучше?
Смешно же ведь, чтобы сконфижить проект, нам нужна тулза (набор утилит) для того, чтобы конфижить их, чтобы конфижить проект, и причина - просто сконфижить проект - сложно. Оно и правда сложно, но доп прослойка не упрощает нифига ничего, вон cra яркий пример, vue cli туда же.

upd: то есть всякие cli должны вроде как "убрать большую часть нюансов за мин колвом конфигураций / zero конфигов" но по факту это не так.
Кстати git clone template и yarn install эта пара консольных команд, не троллинга ради, просто размышления