记一次前端项目从Vue CLI 迁移Vite

330 阅读1分钟

💡 初衷:解决项目打包时间较慢,为了更好的提升开发效率和开发体验

vite的优势以及相关运行机制就不赘述了,大家可以自行查阅vite官网

改造前vue-cli
vue2.6.14
@vue/composition-api1.4.4,使用vue3的新特性
unplugin-vue2-script-setup0.6.17,vue2中使用 语法糖
node14.17

🌈 兼容性:

  • 考虑到vue2.7对vue3的新特性做了很好的向后兼容,并且默认支持vue3的相关Api 和<script setup>语法糖,将vue版本升级为2.x的最后一个稳定版本2.7.14

  • 其次Vite 需要 Node.js 版本 14.18+,16+。有些模板需要依赖更高的 Node 版本才能正常运行,所以对应升级升级 Node 版本。我采用的是14.18.2

项目改造

安装vite

涉及两个包vite、@vitejs/plugin-vue2

添加入口文件index.html

入口文件 index.html 以及favicon.ico 图片移动到根目录

vite 文件中 script 不再动态插入,所以在index.html中导入main.js 文件

<script type="module" src="/src/main.js"></script>

添加vite.config.js

根目录添加vite.config.js文件并添加相关的配置

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue2'
export default defineConfig({
  plugins: [vue()],
})

更改package.json script

将脚本命令改为vite命令

关于代码改造总结下来涉及以下几点:

  1. 将@vue/composition-api 全局替换为vue,移除main.js 中的引入
  2. 删除组件中style的scss变量文件引入,改为vite配置,查看配置
  3. js中使用scss变量需要改为导入.module.css文件,参考链接
  4. 涉及路由解析使用的path模块,改为path-browser
  5. 动态路由采用import.meta.glob 方案

依赖清理

  • @vue/cli-plugin-babel //remove
  • @vue/cli-service //remove
  • @vue/cli-plugin-unit-jest
  • @vue/cli-plugin-eslint
  • @vue/composition-api
  • unplugin-vue2-script-setup
  • ......

💥Tips:

项目改造要因地制宜,根据自身项目情况来调整,有些社区的包可能还不支持ESM,会导致vite的预构建问题。

相关资料

vitejs.cn/vite3-cn/

vueschool.io/articles/vu…