Webpack to Vite踩坑指北

\bullet 前言

    最近一直在看vite的源码(传送),恰逢公司的项目使用的是webpack,正好借此机会做下迁移,并将该过程记录。当前项目使用webpack+vue2

\bullet 对比

    这里挑选了一个比较复杂的路由页面,分别使用vite和webpack启动,记录从npm run start到页面加载的耗时

    vite

    webpack

\bullet 基础改造

    \ast package.json中新建指令

    \ast alias别名

        和webpack一样,配置resolve.alias

    \ast 全局变量注入

        使用vite内置的define代替webpack的DefinePlugin

    \ast proxy代理

        定义server.proxy代替webpack的proxyTable,写法上仅框红的一处不太一样

    \ast 适配vue2

        yarn add vite-plugin-vue2,并在vite.config.js中引入并注册使用

\bullet 错误修复

    \ast 白屏

    \alpha 报错

        运行npm run dev:vite后打开浏览器,页面空白,可以看到入口的index.html中并没有引入script标签

    \beta 修复

        yarn add vite-plugin-html,并在vite.config.js中引入并注册使用,其entry配置项即可帮助我们自动注入script标签

    \ast 默认扩展名称

        \alpha 报错

            不指定.vue扩展名称,会报如下错误

            点开该报错,感觉app并不是一个正常的文件

            故找到引用处,尝试添加.vue扩展名后重启,报错如下

        \beta 修复

            此时已经基本可以确定是省略扩展名称导致的了,故在resolve中增加如下配置

    \ast require语法报错

        \alpha 报错

        \beta 修复

            在webpack中能直接使用是因为其内部帮我们做了处理,在vite中需要单独引入插件(yarn add vite-plugin-require-transform)

    \ast 替换global

        \alpha 报错

        \beta 修复

            查看报错语句

            可以看到,其使用三元运算做了“降级处理”,理论上来说使用false的结果也问题不大

            故,使用window来代替global

    \ast 修改vue引用版本

        \alpha 报错

        \beta 修复

            这是由于vue包中默认导出的是runtime版本,修改下之前定义的别名即可

    \ast 依赖注入

        \alpha 报错

        \beta 修复

            在webpack中通过ProvidePlugin提前注入相关依赖而不需要在页面中显示引入,在vite中可以使用@rollup/plugin-inject来代替

    \ast 插件报错

        \alpha 报错

        \beta 修复

            由于本次目的仅仅是为开发环境做改造,故为了尽可能少的影响生产,这里随便写个插件过滤下

    \ast vite-plugin

        \alpha 报错

        \beta 修复

            这是之前我优化面包屑时候写的webpack的loader,需要按照vite插件的语法格式做下替换,将直接export的方式改为返回一个包含name和transform的对象的函数即可

    \ast 内置模块

        \alpha 报错

        \beta 修复

            项目中大量使用了node的timers模块的setTimeout方法,这在vite中被视为内置模块是不允许被客户端调用的,估计当初是不小心自动引入的,同样的,我们在插件中识别并替换掉

    \ast mqtt

        报错如下

        查看相关代码,感觉是process相关的错误

        故尝试安装process包,并通过inject进行注入

    \ast 样式

        \alpha 错误

            报错如下

        \beta 修复

        这是因为‘~’符号不被vite识别,因为该符号是vue-cli中的用法,去掉即可


    \ast icon失效

        \alpha 问题

        \beta 修复

            在index.html中以cdn的当时引入,这虽然会对生产产生一定的影响,不过理论上其影响可以被忽略

    \ast 默认空格

        \alpha 问题

            目前发现的,按钮直接的默认的空隙没了

        \beta 修复

            修改默认编译方式为preserve就可以了

    \ast 路由改造

        由于vite本身就是按需加载的,则我们在路由中进行的懒加载就显得有点鸡肋,而且还会影响vite的预构建行为

        故考虑将路由引用方式做调整,同样出于仅作用于本地开发环境的考虑,需要在plugin阶段做下转换,即:

            将如下引入方式

            通过plugin替换为如下形式

            则随便写点正则

            替换结果如下

            取舍

                这确实能有效避免二次预构建行为,也确实有效的提高了部分页面首次加载的时间,但是却导致首屏加载被拖到和webpack持平了,因此到底要不要改造路由方式就仁者见仁了.....

                


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容