Итак, почему 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 и их нужно перенести в адекватную реализацию?
Я вообще всегда воспринимал cra как быстрый старт прототипа для проверки гипотезы, но никак не разрабатывать, поэтому хейта не понимаю. Однако там действительно много спорных моментов и можно было сделать лучше
С любым cli так, лучше вообще не пытаться сделать ака bootstraping tools какой то, а лучше собрать в одном месте заметки по типу how to, начиная с минимального набора для старта, webpack + testing + linting + hmr + building и дополнять его. Если знаешь как оно работает внутри, то собрать самому конфиг проекта не проблема. Большинство страдающих с cli не знают основ и документацию инструментов (линтинг, тесты, трансформации кода по пути билдинга) и лезут туда в крайнем случае, нужно прививать другую привычку - с самого старта опираться на доки. Что проще поддерживать: такие how to доки или cli (еще один черный ящик) + доки для cli? Что лучше?
Смешно же ведь, чтобы сконфижить проект, нам нужна тулза (набор утилит) для того, чтобы конфижить их, чтобы конфижить проект, и причина - просто сконфижить проект - сложно. Оно и правда сложно, но доп прослойка не упрощает нифига ничего, вон cra яркий пример, vue cli туда же.
upd: то есть всякие cli должны вроде как "убрать большую часть нюансов за мин колвом конфигураций / zero конфигов" но по факту это не так.
По сути, мне нужен не отдельный слой. А способ в несколько консольных команд настроить проект для старта разработки. Может он будет генерить готовые конфиги, это не особо важно.
upd: то есть всякие cli должны вроде как "убрать большую часть нюансов за мин колвом конфигураций / zero конфигов" но по факту это не так.
https://github.com/vuejs/vue-cli/tree/v2
https://github.com/vuejs-templates
Только попроще чтоле, как бы затея в результате не вылилась во что то подобное =)