create-react-app脚手架源码讲解

130 阅读2分钟

cli(脚手架)全称commond line interface(命令行界面),是通过命令行帮助我们快速的搭建前端项目的一种工具。脚手架有以下优点:

  • 提高开发效率
  • 降低开发难度,不需要关心底层配置、只要会使用前端框架就能开发应用。
  • 统一项目的开发风格和规范

create-react-app是react官方的脚手架,它可以帮助我们快速的搭建react项目,并且集成了webpack、babel等前端开发环境。很多公司都有自己个性化的脚手架,有的是基于create-react-app的、有的则完全是自己实现的,那么当我们熟悉了cra(create-react-app的简称)之后,我们就可以根据自己的需求来定制自己的脚手架。

cra运行流程分析

npx create-react-app my-app
npx create-react-app my-app --template typescript

在执行了上面的命令之后,cra的运行逻辑大概如下:

  1. 根据命令行输入错命令以及参数判断要创建项目名称、项目模板、依赖等。
  2. 下载模板文件和react-scripts,其中react-scripts是cra的核心依赖,负责构建、编译、打包react应用, 包含了webpack的配置、babel的配置等。
  3. 下载项目依赖,根据模板文件中的package.json文件下载项目依赖。

1). cra的目录结构:

image.png 重点关注packages目录:

  • create-react-app是cli的入口文件
  • cra-template是模板文件
  • react-script提供react项目的 构建和运行能力,就是webapck的那一套
  • 其余的目录存放一些工具和辅助函数

2). 直接点开create-react-app的index.js,发现它执行的是creatReactApp.js提供的init方法

image.png 继续跟踪到creatReactApp.js文件,找到其中的init方法开始分析

image.png 这里使用了commonder的npm包,捕获用户在命令行输入的指令,获得项目名称、 verbose、--template等参数。

image.png

3). 下面很长一段代码都是对运行环境的检查。

检查项目路径是否存在、项目名称是否合法

image.png 检查cra版本

image.png 检查node版本

image.png

检查使用的是yarn还是npm、检查是否使用pnp

image.png 安装reat、react-dom、react-scripts、cra-template

image.png

image.png

4). 安装成功之后开始执行react/scripts的init.js

image.png

5). 检查模板的安装环境

image.png

6). 根据cra-template的依赖进行修改合并package.json文件

image.png

7.) 初始化git仓库并创建第一次提交

image.png

8.)安装依赖

image.png

9.) react-scripts中还有start、buid、rject等命令,放到下次讲解

image.png