So, the thing with Vite is that it’s great as long as your use case is in the happy paths it caters to. But if you diverge from them, its config story rapidly devolves to:
- A very large subset of Rollup, which is so large that the docs seem to be self-mocking about it
- Another very large subset of ESBuild, which is smaller but still non-trivial
- A whole bunch of Vite-specific stuff that’s only partly (and incompletely/inconsistently) abstracting the omitted portions of those subsets
- An enormous amount of terminology, some very poorly described in any docs if you even know which to consult
- Plugins you’ll definitely need and which are a superset of Rollup’s, and the abstraction is so leaky that you’re often better off skipping the Vite keyword in your searches
I mean, even in the worst case it’s not Webpack, but it’s astonishing how close it can feel very easily.
And I don’t mean this nearly as harshly as it probably sounds. Vite really is great if it’s designed for your use case. But it’s far from the no-headaches panacea even I thought it was a few months ago.
- A very large subset of Rollup, which is so large that the docs seem to be self-mocking about it
- Another very large subset of ESBuild, which is smaller but still non-trivial
- A whole bunch of Vite-specific stuff that’s only partly (and incompletely/inconsistently) abstracting the omitted portions of those subsets
- An enormous amount of terminology, some very poorly described in any docs if you even know which to consult
- Plugins you’ll definitely need and which are a superset of Rollup’s, and the abstraction is so leaky that you’re often better off skipping the Vite keyword in your searches
I mean, even in the worst case it’s not Webpack, but it’s astonishing how close it can feel very easily.
And I don’t mean this nearly as harshly as it probably sounds. Vite really is great if it’s designed for your use case. But it’s far from the no-headaches panacea even I thought it was a few months ago.