[筆記] Vue 2 升級 Vue 3 + Vite 心得 – 1

近期手邊有一個簡易用 vue-cli 建立的舊 Vue 2 項目,想說將其升級為 Vue 3 + Vite ,並改用 pnpm 且加上 TypeScript。這邊筆記下分段進行的心得,以及後續可以採用的事項。

vue.js logo vue


內容

主要套件

升級前

  1. Vue 2
  2. vue-cli
  3. eslint
  4. prettier
  5. vuex
  6. vue-router 3
  7. bootstrap-vue
  8. node-sass

升級後

  1. Vue 3
  2. vite
  3. eslint
  4. prettier
  5. pinia ( vuex 的繼任者 )
  6. vue-router 4
  7. TypeScript
  8. unocss

第一階段 – 升級 Vue 2.7 & Vite

步驟

1. 移除下列項目: @vue/cli-plugin-babel, @vue/cli-plugin-eslint, @vue/cli-plugin-router, @vue/cli-plugin-vuex, @vue/cli-service, babel-eslint, sass-loader, vue-template-compiler, bootstrap-vue 因為 sass-loader 是 webpack 編譯時所需要的,vite 是不需要安裝的。 bootstrap-vue 當前僅支援到 Vue 2.6,所以改安裝原生 Bootstrap 5 + @popperjs/core 即可
2. 將 eslintConfig 的設定移出,在根目錄新增一個檔案 .eslintrc.cjs

3. 新增以下項目: vue, Bootstrap, @popperjs/core, @vitejs/plugin-vue2, @vue/eslint-config-prettier, sass, vue-template-compiler 其中 vue-template-compiler 和 vue 的版本必須要對齊,否則會報錯
4. 將原先的 scripts 指令改成如下: 由於改用 pnpm,所以 lint 的規則統一先用 eslint 過完再執行 prettier

5. 在根目錄新增 .prettierrc.cjs 和 .prettierignore

6. 將 index.html 搬出 public 資料夾,改放到根目錄下。如果內容有保留 webpack 的填入值,就將其修改掉
7. 移除 vue.config.js,改新增 vite.config.js

8. 在根目錄用指令 rm -rf node_modules package-lock.json pnpm-lock.yaml 給移除掉,再用 pnpm install 重新安裝一次
9. 由於 vite 不支援 require 動態載入的寫法,就算是圖片,都要用 import image from ‘圖片位置’ 的寫法改寫
10. 執行 pnpm dev ,這樣就算初步升級完成了


第二階段 – 升級 Vue 3

步驟

1. 移除下列項目: @vitejs/plugin-vue2 , vue, vue-router, vuex, browserslist vite 是無法使用 browserslist 設定的
2. 安裝以下項目: @vitejs/plugin-vue, vue, vue-router, pinia
3.改寫 main.js 的內容,重點如下:

4. 改寫原先的 vuex 內容 getters 改直接取用 state 的狀態、mutations 可直接併入到 actions

5. Vue Router 改用 v4 的寫法,變化不大。可參考官網指南修改
6. *.vue 檔案若有用到 destroyed() 要改成 unmounted()
7. .eslint 的 extends 要調整為 ‘plugin:prettier/recommended’

按讚加入粉絲團

延伸閱讀