- Published on
vite-1.0 serverPluginHtml文件解读
- Authors
- Name
- 祝你好运
通常我们开发的网站,第一次加载的就是HTML页面,vite会改写这个HTML,这是通过
src/node/server/index.ts
里面的htmlRewritePlugin
来实现的。 代码截图: 
我们可以看到,这个插件里面就一个
这里面比较重要的就是那个
rewriteHTML
,别的都很简单,然后我们再看rewriteHTML
里面的代码: 
rewriteImports
,第50行的else分支,只是记录了import的记录到importerMap
里面。rewriteImports
是serverPluginModuleRewrite
里面的,从名字就可以看出来,它会重写那些导入,比如我们在代码里面一般都这么引入React:import React from 'react'
但是重写之后就变成了
import $viteCjsImport0_react from '/@modules/react.js'
const React = $viteCjsImport0_react
34行和64行的transformIndexHtml
对整个源代码解读影响不大,这个简单来说就是用用户配置文件中的transform来处理index.html文件,如果初始项目我们不会提供这些,所以这里可以先不看,等到整个1.0代码看的差不多了,有兴趣的话,可以深入探索这里。
还有一个要注意的就是63行的injectScriptToHtml
,这个往HTML文件里面注入HMR的客户端代码。
到这里的话,整个文件的重点就都看过了,注意,我们这里尽量走主线,尤其是第一次看源代码,先弄清楚主线,然后再抠细节。
作业
如果你也是用的React项目,那你的index.html的返回文件里面一定会引入一个叫@react-refresh
的包,请你研究下它是在哪里被注入进去的。
提示,看下你的vite.config.js
的配置,然后再深入探索。