wp2vite ~ 让webpack项目支持vite

TNTWeb - 全称腾讯新闻前端团队,组内小伙伴在Web前端、NodeJS开发、UI设计、移动APP等大前端领域都有所实践和积累。 目前团队主要支持腾讯新闻各业务的前端开发,业务开发之余也积累沉淀了一些前端基础设施,赋能业务提效和产品创新。团队倡导开源共建,拥有各种技术大牛,团队Github地址:https://github.com/tnfe 今天为大家介绍开源项目wp2vite,作者德莱问 , 项目地址: https://github.com/tnfe/wp2vite

why vite

在浏览器支持 ES 模块之前,JavaScript 并没有提供的原生机制让开发者以模块化的方式进行开发。这也正是我们对 “打包” 这个概念熟悉的原因:使用工具抓取、处理并将我们的源码模块串联成可以在浏览器中运行的文件。

时过境迁,我们见证了诸如 webpack、Rollup 和 Parcel 等工具的变迁,它们极大地改善了前端开发者的开发体验。

然而,当我们开始构建越来越大型的应用时,需要处理的 JavaScript 代码量也呈指数级增长。包含数千个模块的大型项目相当普遍。

我们开始遇到性能瓶颈 —— 使用 JavaScript 开发的工具通常需要很长时间(甚至是几分钟!)才能启动开发服务器,即使使用 HMR,文件修改后的效果也需要几秒钟才能在浏览器中反映出来。如此循环往复,迟钝的反馈会极大地影响开发者的开发效率和幸福感。

Vite 旨在利用生态系统中的新进展解决上述问题:浏览器开始原生支持 ES 模块,且越来越多 JavaScript 工具使用编译型语言编写。

image.png

wp2vite介绍

首先介绍一下今天的主角,这是一个命令行工具、自动化工具。

工具的作用是一键让使用webpack来进行开发和构建的项目支持使用vite来进行开发和构建。

如果有人不知道webpack 和vite分别是什么,该学习学习了。

不过对于一个前端er来说,默认你们是知道webpack的;如果你不知道vite的话,建议了解一下,号称是下一代前端开发与构建工具.

前段时间写过一篇vite解析和尝试的一篇文章 ,在文章最后,舔狗了一下:"vite,真香"。

image.png

在前段时间对wp2vite做了一次重构的更新,把之前的分情况处理改为了流式的处理;

  • 第一版的wp2vite是先对项目进行判断,react项目走react的流程,vue的项目走vue的流程; 第二版的wp2vite是流式,一条线完成,不分项目,这样的好处是逻辑更加清晰、代码复用性更强;
  • wp2vite 第一版时仅对react项目进行了良好的支持,vue项目支持力度非常低;第二版在支持react项目的基础上,对vue项目的支持力度更加友好, 同时因为是流式的渲染,即使不是react项目和vue项目,wp2vite也会为你的项目转为vite提供支持。

安装与使用

关于wp2vite的安装,与其他命令行工具安装是一样的:

npm install -g wp2vite
or
yarn global add wp2vite

使用的话,其实是非常简单的,一个特别特别简单的工具,没有那么多配置文件,也没有那么长的命令行;

// 进到你的使用webpack开发和构建的项目的目录
cd your_workspace/your_project
// 执行wp2vite的命令行
wp2vite 
or 
wp2vite --config=./webpack.config.js // 传递配置文件

wp2vite -v // 查看版本

待wp2vite命令执行完后,进行安装依赖和启动项目

// 安装依赖
npm install

// 启动项目
npm run dev // 如果原先你的项目有dev script,请执行下面的命令
or
npm run vite-start

转换效果图:

image.png

关于实现

简单说下关于wp2vite的实现,使用的命令行工具是cac,使用的美化输出工具是chalk,其他的基本就没有了。下面我们简单说下步骤:

  1. 首先会根据你的项目进行分析,包括package.json文件里面的依赖、node_modules下面的文件等,获取当前项目的一些环境信息(env),包括但不限于isReact、isVue、isVue2、isVue3等。
  2. 根据上面获取到的项目信息,项目类型等获取项目的webpack的配置; 此处坑较多,因为不同的脚手架创建的项目webpack配置的路径不一样;而因为前端卷的厉害,所以各种创建项目的轮子层出不穷; 同时还因为脚手架版本的不同,配置文件的获取方式也会有所不同,所以此处浪费了很长的时间去研究各种脚手架的源码,搭配mock函数获取到webpack的配置;
  3. 解析上面获取到的环境信息和webpack的配置信息,对此信息进行分析,转化为vite的配置。此时拿到的信息,已经可以进行转换了,这也是第一版时候的终点。第二版的时候还对项目进行了更加深入的分析,例如tsconfig.json的配置等等,还有其他的哈,不一一赘述。
  4. 此时开始为项目创建vite所需的配置,包括package.json里面增加vite相关scripts和devDependencies、vite.config.js的创建、HTML的提取和写入等。

image.png

最后

wp2vite是一个工具,工具会帮助你省却很多繁琐的工作,不过有时候工具不是万能的,如果你的项目转换过程中出现问题,欢迎给我们提交bug 给我们,我们会在第一时间进行解决。

当然如果转换过后的项目还有一些配置或者可以用脚本去实现的事情去做,你也可以参与贡献 ,我们也非常欢迎

如果你的项目是webpack,同时开发过程中启动慢、热加载慢,可以安装wp2vite尝试转成vite,尝试一下飞快的开发启动体验;如果你的项目启动还不那么慢,可以转一下试试,什么叫做飞快。

如果你觉得这个工具帮助到你了,辛苦给我们点个star ,我们将会在开源的路上更加持之以恒。

image.png

团队

TNTWeb - 腾讯新闻前端团队,TNTWeb致力于行业前沿技术探索和团队成员个人能力提升。为前端开发人员整理出了小程序以及web前端技术领域的最新优质内容,每周更新✨,欢迎star,github地址:https://github.com/tnfe/TNT-Weekly

image.png

原文地址:https://cloud.tencent.com/developer/article/1863552

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340