vue-cli迁移Vite不完全指北

用户头像
北京/UI设计师/3年前/476浏览
vue-cli迁移Vite不完全指北

本文简单聊一下二者的不同,为什么要从vue-cli迁移到Vite,以及具体的迁移步骤。


vue-cli与Vite同属于Vue官方团队开发的脚手架及开发服务的构建工具,两者在构建方式、编译速度、浏览器支持范围等很多方面都有区别。本文简单聊一下二者的不同,为什么要从vue-cli迁移到Vite,以及具体的迁移步骤。

Vite与vue-cli的区别

两者的不同之处在于:首先从使用的构建工具角度,vue-cli使用的是webpack,Vite使用的是Rollup,因此有生态和使用方法上有天然的不同;其次从工作方式来看,vue-cli会解析每个JS模块的import或require,借助各种loader将应用程序构建成Bundle,而这些工作又需要在webpack-dev-server启动之前完成。因此随着文件越来越多,依赖复杂度越来越高,开发需要等待的时间也说越长。Vite依赖浏览器对ES6模块的原生支持,浏览器通过HTTP直接请求JS模块,且在运行时处理;vue文件、样式文件等则通过插件处理。将耗时的JS模块单独剥离到浏览器带来的好处就是,消耗的时间相比vue-cli有大幅度的减少。

Vite相比vue-cli有编译速度快、编译后文件可读性高等优点,在生态环境、插件数量、浏览器支持范围方面相比老牌的vue-cli还有一定差距。但目前不支持ES6的浏览器已经很少了,而且Rollup应对日常开发好完全没有问题,因此从开发体验角度来说,建议使用Vite。


为什么要迁移到Vite

主要原因还是速度。对于最简单的脚手架模板工程,vue-cli启动时间超过了2秒,Vite只需要0.2秒,只有前者的十分之一。如果是真实的项目,在启动时间上Vite依然可以保持秒级,vue-cli则是肉眼可见的慢。

除了启动阶段,我们在开发过程中还需要看到修改带来的变化。Vite在HMR方面,因为整体Bundle不需要重新解构,所以不管文件的大小,HMR可以做到非常快速,这点同样是vue-cli做不到的。


迁移步骤

下面进入本文的主题,如何从vue-cli迁移到Vite。


#01 更新package.json

项目中用到的@vue/cli-service 及各种插件@vue/cli-plugin-xxx都可以删掉了。

npm un @vue/cli-service @vue/cli-plugin-babel @vue/cli-plugin-eslint @vue/cli-plugin-router @vue/cli-plugin-vuex

因为Vite内置了常见的预处理器,sass-loader这样的依赖也可以删除。下面增加Vite相关的依赖

npm i vite -D

如果你使用的Vue版本是2.7,那么需要安装vite-plugin-vue2

npm i vite-plugin-vue2 -D

如果使用的2.6或更早的版本,那么需要安装@vitejs/plugin-vue2

npm i @vitejs/plugin-vue2

如果需要支持JSX/TSX

npm i @vitejs/plugin-vue-jsx -D

上述依赖安装完成后,原来的模板编译器就可以删除了

npm un vue-template-compier

如果html文件中使用到了ejs语法,还需要安装

npm i vite-plugin-ejs

scripts下的相关命令也要修改


#02 移动index.html

将`index.html`文件从public目录移动到项目根目录下。

Vite 将 index.html 视为源码和模块图的一部分。Vite 解析

>Vite 将 `index.html` 视为源码和模块图的一部分。Vite 解析 `

将index.html文件从public目录移动到项目根目录下。

Vite 将 index.html 视为源码和模块图的一部分。Vite 解析

由于Vite依赖ES模块,原文件中的script需要加上module类型。


#03 配置文件

原来的`vue.config.js`文件名成`vite.config.js`。下面是一个例子,涉及到了jsx配置、@别名、插件的加载、css处理等内容。


#04 更新环境变量

Vite通过`import.meta.env`对象暴露环境变量,其中内置了诸如`import.meta.env.MODE` `import.meta.env.BASE_URL`等变量。同时还可以通过`dotenv`加载更多自定义的环境变量。

npm install dotenv

具体可参考dotenv和Vite文档中关于环境变量的描述。

#05 SFC引用时增加扩展名

在引用组件时需要在文件名后面增加扩展名后缀:

如果不想手动处理或者需要修改的地方很多,可以在vite.config.js中通过修改`resolve.extensions`配置项来自动处理。


#05 删除webpack引入的注释

webpack在处理类似路由等模块时会产生动态引入的注释,Vite则会为模块自动命名(例如About.[hash].js),因此这些注释需要删除。


以上即为从vue-cli迁移到Vite的主要步骤,在实例操作过程可能还需要修改babel、eslint、jsconfig.json、husky等配置,因不同项目差异较大,就不在这里赘述了。在完成这些步骤之后,项目应该就可以通过Vite启动了。

文章最后推荐一个自动转换的小工具:[webpack-to-vite](https://github.com/originjs/webpack-to-vite),祝大家Vite愉快。


1
Report
|
1
Share
相关推荐
评论
用户头像
in to comment
Add emoji
喜欢TA的作品吗?喜欢就快来夸夸TA吧!
推荐素材
You may like
相关收藏夹
大家都在看
Log in