Migrate Vue 2 with Vuetify and Jest to Vite and Vitest

So my main project at work is a Vue 2 and Vuetify 2 site, but privately I have been playing with Vue 3 and loved the Composition API to avoid mixins. Due to some new features, we are planning to build soon. I wanted to write it in Vue 3, to prevent needing to migrate it later.
I wanted to investigate how to migrate from Vue 2 to Vue 3. Furthermore, I planned to use the amazing Migration Build to allow Vue 3 to use most Vue 2 components during a migration period. Which is much less risky for a large project.
I took a rough hack at doing the migration leaving only a handful of pages to test over a day to see how likely the migration was. I had to upgrade Vuetify from 2.X.X to an early beta version of 3.X.X. However I was unable to get anything more than a few v-cards and v-btn was working. A peer on another work team had said as much, but I hadn't listened. My bad.
Vuetify 3 is not ready of 2021-12-18
Unfortunately, Vuetify is not ready for Vue 3 as of 2021-12-18. I tried the beta @vuetify/nightly, but it's far from ready. The documentation said it's to ship in February but looking at the missing functionality I doubted it.
I joined the discord community and got caught up on the most recent updates. Basicity it's going to take a little longer which is ok. It's open source and it's not like I've contributed any pull requests. It's been a great framework and recommend it to everyone.
I'll update this post when it is ready and has support for Vue 3.
Original Goal - Vue 3
So the dream would be to get to vue 3, but that's not practical without Vuetify. That leaves two options:
- Replace
Vuetifywith a different component framework - Don't upgrade to
Vue 3and keepVuetify 2.X.X- Upgrade to v3 once it's ready
To be clear, replacing Vuetify has almost no upside for my employer.
- It would take a lot of time to convert the large codebase.
- It is likely to introduce bugs
- No improvement for the user
- Time and effort retraining the team.
- Moving away from a framework others in the company already also uses.
So it's pretty easy to decide to wait on migrating to Vue 3 and Vuetify 3.
New Goal - Vite and Composition API with vue 2
Thinking about the problem I realized that also of the migration and benefits of the migration to vue 3 was the improvement of the tooling. Vite is so fast you have to see to believe. I follow Evan You and Anthony Fu on twitter so have been watching it come to life.
So I decided to try to migrate to vite and allow the @vue/composition-api with vue 2. This would also make it easier to upgrade to Vue 3 once it's ready.
So the new goal looks like this.
- keep
vue 2andvuetify 2.X.X - remove
@vue/cli-service - remove
webpack - remove
babel - add
vite - add
@vue/composition-api
This gives a lot of benefits and a clear upgrade path!
It was pretty easy to clone a simple example repo with vue 2 and vuetify 2.X.X with @vue/cli-service. And tested out the upgrade there.
Once that worked I then did the upgrade on the more complex monorepo at work.
Update 2022-07-012
With Vue 2.7 "Naruto" Released I'm now on Vue 2.7 and was able to remove the @vue/composition-api!