internetarchive / openlibrary

One webpage for every book ever published!
https://openlibrary.org
GNU Affero General Public License v3.0
5.23k stars 1.37k forks source link

Migrate to Vue 3 #7547

Open jimchamp opened 1 year ago

jimchamp commented 1 year ago

Open Library maintains a small number of web components that were created with Vue 2. Vue 2 will reach end of life on 31 December 2023, so we'll have to migrate to Vue 3 in the near future.

Project Summary

Code Changes

Finishing Touches

Next Steps

  1. [ ] Draft PR #7550 missing 2 files (merge UI & library explorer)
  2. [ ] #8384 will need to get added into #7550

Additional context

This also give us the opportunity to try using Vite for our component builds. We currently use Vue CLI, and this is one of the slower steps of our build process. More importantly, Vue CLI is now in maintenance mode, and eventually will be no longer supported.

Stakeholders

RayBB commented 1 year ago

vue-async-computed doesn't support vue 3 per https://github.com/foxbenjaminfox/vue-async-computed/issues/104

Will need to move away from that too.

RayBB commented 1 year ago

Related thread about challenges: https://www.reddit.com/r/vuetifyjs/comments/126zkzb/vuevuetify_2_to_vuevuetify_3_migration_is/

jimchamp commented 1 year ago

If memory serves, vue-multiselect will need to be upgraded in order to migrate the library explorer. The Vue 3 version of this library is on their next branch, here.

RayBB commented 1 year ago

You're right and Vue 3 support only seems to be available as beta and there doesn't seem to be too much active development there.

How do we feel about using beta packages that haven't had a release in a while?

Might be worth looking into: https://github.com/vueform/multiselect

It has a nice comparison table with the library we are using now.

RayBB commented 1 year ago

Based on the discussion a few weeks back Drini said we're okay to use the beta lib for now. I'm going to investigate that.

github-actions[bot] commented 9 months ago

Assignees removed automatically after 14 days.

mekarpeles commented 9 months ago

Here's the latest from my conversation w/ @jimchamp image

jimchamp commented 9 months ago

Sorry about that, @RayBB... We're still hammering out the process and exclusions for this new reassignment workflow.

I've added the no-automation label to this issue. Issues with this label will not have their assignees automatically removed.

mekarpeles commented 9 months ago

We decided on:

Have each web component have its own index.js which will let us load only what’s needed and also solve the asynccompute plugin issue