React源码之准备开始debug(有大坑!!!)

248 阅读2分钟

拉取源代码

react仓库拉取代码

  1. 可以下载zip然后用IDE打开
  2. 也可以执行 git command 👇
git clone https://github.com/facebook/react.git

然后用你喜欢的IDE打开,我是直接在vscode中执行 git clone (Ctrl + P 打开命令面板)👇

image.png 这样可以省一点时间打开文件夹hhhhh~

下载依赖

Node的版本强烈建议 v18.20.1 及以上(因为我看到仓库里面有 .nvmrc 文件),用NVM管理Node版本更佳!!!

这个链接是一篇安装nvm的guide(写的很好!!!) www.freecodecamp.org/news/node-v…

建议跟着React的官方文档的命令来构建(旧文档)但是我真的想不通的一点是 新的React官方文档 竟然没有旧文档的 Development Workflow(开发流程),是我没找到嘛,求大佬们告知在哪里!!!

好啦,回归主题。按照 Development Workflow 流程来,先用 yarn 下载所有依赖。

构建产物(有大坑!!!)

按照流程来,接着就是执行 yarn build 构建,但是这是构建所有产物(cjs、esm、umd、server、profiling等文件),而且构建的等待时间巨TM久!!,所以我们可以指定构建的产物类型(umd),还可以指定只有哪些包参与(得益于monorepo架构)构建👇

yarn build react/index,react-dom/index --type=UMD

上面的命令代表只构建 reactreact-dom 这两个包,并且产物的类型是UMD格式

文档里面也详细说了👇 image.png 按照红框里的文字说法就是运行命令后,直接运行 fixtures/packaging/babel-standalone/dev.html文件。

就在执行这个命令后,发现build文件夹里面没有任何umd格式的文件👇 image.png 然后我去调试构建脚本,发现根本就没有 umd 格式的参数👇 image.png

然后我就去issue看了看,果然发现了原因!!👇 image.png 构建umd产物的代码都被这位大佬删掉了,具体原因的话大家可以去看看issue

社区里面提倡演示demo的话 用 esm.sh 网站的包来演示,不要使用umd了。👇

image.png

为了省点事,我没有直接引用 esm.sh 上的包,我直接把仓库的历史记录回退到删掉umd之前的最新一个提交👇

image.png

对应的git命令

git checkout -b debug-react 0c245df

接着我们再来一次运行

yarn build react/index,react-dom/index --type=UMD

我们就可以看到build中有umd格式的文件了👇 image.png

运行

最后我们用 live server 运行 dev.html,但是记得改下html文件里面的React的渲染方法,现在我们得产物是React18及以上的 image.png 运行过后就可以看到👇

image.png

end

好啦,以上就是我自己的调试React的源码的准备工作