React18.2源码开发环境搭建
使用vite来测试自己仿写的React源码执行情况。
mkdir react-basic
cd react-basic
npm init -y
npm install vite @vitejs/plugin-react -D
编写vite.config.js
import path from 'path';
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
export default defineConfig({
plugins: [react()],
resolve: {
alias: {
// 用于指引vite在打包源码时寻找包所在的位置
react: path.posix.resolve('src/react'),
'react-dom': path.posix.resolve('src/react-dom'),
'react-dom-bindings': path.posix.resolve('src/react-dom-bindings'),
'react-reconciler': path.posix.resolve('src/react-reconciler'),
scheduler: path.posix.resolve('src/scheduler'),
shared: path.posix.resolve('src/shared')
}
}
});
项目入口文件 项目根目录下的index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>React18.2</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="./src/main.jsx"></script>
</body>
</html>
src/main.js:
console.log('main')
创建npm脚本命令: package.json:
{
"name": "1react",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "vite --force"
},
"author": "",
"license": "ISC",
"devDependencies": {
"@vitejs/plugin-react": "^4.0.3",
"vite": "^4.4.2"
}
}
配置vscode编辑器配置文件,以实现在源码中各个文件之间的跳转能力。 jsconfig.json
{
"compilerOptions": {
"baseUrl": "./",
"paths": {
"react/*": ["src/react/*"],
"react-dom/*": ["src/react-dom/*"],
"react-dom-bindings/*": ["src/react-dom-bindings/*"],
"react-reconciler/*": ["src/react-reconciler/*"],
"scheduler/*": ["src/scheduler/*"],
"shared/*": ["src/shared/*"]
}
},
"exclude": ["node_modules", "dist"]
}
执行npm run dev后访问本地启动的服务器地址,在浏览器控制台打印如下内容说明环境初步配置成功。