vue-cli项目迁移至vite项目
项目上遇到了需要将vue-cli项目迁移至vite的情况,完成迁移后记录一下。
vue-cli项目迁移至vite项目
分析项目结构
- 分析package.json的依赖及版本:确保项目上的功能依赖都能更新成vite项目所需;如果没对应的依赖,是否有替换方案。
- 特殊插件:是否有针对特殊业务需求处理所使用的插件或依赖,例如
svg-sprite-loader
在vite中就用不了,就要替换一下。 - 分析可能存在的兼容问题:例如require使用、环境变量等等。
卸载vue-cli相关依赖
可能每个项目情况不同,但大致都有这些:
1 | //"dependencies" |
添加vite相关依赖
1 | //"dependencies" |
修改配置
添加并修改vite.config.js
对比原vue.config.js
,在根目录新建vite.config.js
,争取做到功能复刻
给出一套配置,仅供参考
1 | import { createHtmlPlugin } from 'vite-plugin-html'; |
移动index.html并修改部分代码
将原public文件夹下的index.html 移至 根目录下;接着在index.html中 添加入口文件、修改title注入的语法、favicon.ico的引入路径
修改package.json配置
看项目情况,之前项目上eslintConfig的配置写到了package.json中,现在把它挪到根目录下的.eslintrc.js中
需要注意的一个点,如果package.json中开启了: “type”:”module” ,那么.eslintrc.js 需要改成 .eslintrc.cjs
启动项目,处理问题
动态路由解析问题
由于打包器变了,获取组件模块的方式也要随之更改;主要是获取文件然后再处理路径的修改。
1 | //原webpack方式获取 |
依赖require引入问题
按图索骥,顺藤摸瓜,找到问题点,是aes加密引入的报错,改之。
1 | // const CryptoJS = require('crypto-js'); |
图片加载问题
图片使用require来解析的都会有问题,修改也分2种情况
纯静态文件路径
类似
url: require('@/assets/images/mapIcons/xxxx.png')
改为url: new URL('@/assets/images/mapIcons/xxxx.png',import.meta.url).href
动态文件路径
1
2
3
4
5
6
7
8
9<div :style="{backgroundImage:`url(${require('@/assets/images/xxxx.png')})`}"></div>
修改方法:
//定义方法,且new URL第一个参数必须要有一段文件路径(不能使用路径别名@)
const loadImageUrl = path => {
return new URL(`/src/assets/${path}`,import.meta.url).href;
};
<div :style="{backgroundImage:`url(${loadImageUrl('@/assets/images/xxxx.png')})`}"></div>
环境变量获取问题
- 非配置文件
定位问题:route/index.js 路由生成时候,改为 import.meta.env.BASE_URL
即可
1 | const router = createRouter({ |
配置文件(例如vite.config.js)
之前可能会通过类似这样的代码来判断环境(或者获取vue自定义的环境变量)
1
2
3
4
5// 是否为生产环境
const isProduction = process.env.NODE_ENV !== 'development';
module.exports = defineConfig({
//...
})现在使用vite,我们可以这样:
1
2
3
4
5
6
7
8
9
10
11
12
13export default defineConfig(({command, mode }) => {
//环境变量直接从mode里获取即可
console.log("=>(vite.config.js:15) mode", mode);
//这样可以获取自定义的vite变量
// const env = loadEnv(mode, process.cwd());
const isProduction = mode === 'production';
return {
//...
}
})
最后
记得打包一下,看看有没报错,然后本地nginx部署下启动看看有没报错。
vue-cli项目迁移至vite项目
1.docker部署jenkins
2.云服务器上前端自动化部署一条龙
3.服务器docker安装nginx
4.hexo设置永久链接地址为数字编号
5.自动部署hexo博客
6.服务器上安装jenkins