Don't Eject Your Create React App
medium.comWhat I got when I followed the link
Medium is shockingly bad. I see absolutely no value in this service any more.
I have reader mode permanently enabled for medium.com for Safari on iOS, and on Chrome for MacOS I have Ublock Origin rules to heavily filter out elements on the page.
I just wish CRA would give me a hook to touch the webpack configs. I'm willing to bite the pain of needing to rewrite my custom configs if they move to something else.
Simple example: with webpack it's trivial to configure it to load env-specific extensions. You can have foo.js, foo.dev.js, and foo.mock.js and it will import the correct one automatically based on an env variable. It's three lines of code that I use in all my React projects and it's honestly enough to keep me away from CRA.
The article covers the use-case of making small modifications to the build. react-app-rewired[1] and customize-cra[2] give you access to tweak the webpack build indirectly. While babel-macros[3] in CRA 2.X give you access to the babel transpilation step without having to eject. While it's not exactly what you're referring to, it does get you a little bit closer to the build.
[1] https://github.com/timarney/react-app-rewired/
[2] https://github.com/arackaf/customize-cra
[3] https://babeljs.io/blog/2017/09/11/zero-config-with-babel-ma...
Agreed. It's becoming harder and harder to justify managing your own React pipeline, even in the rare cases where something might be missing that I want included.
Can someone explain what ejection is? I'm not familiar with this terminology. How is it different from say, editing your package.json or webpack.mix.js files?
reace-create-app has predefined configs in packages which you can't edit unless you eject them (copy to your own project and update the links) but you won't get updates anymore.
It really blows my mind that the latest, greatest technology is so difficult to work with it requires a meta-tool manage the process.
CRA actually has almost nothing to do with React and a whole lot to do with other tools (Babel, ES6, Webpack, Jest). You don't need most of them to build a React application, it's mostly about developer experience and the surrounding ecosystem.
FWIW Angular does the same thing with Angular-CLI. The "problem" is the web dev ecosystem, not React itself.