CMU Coding Bootcamp
1# React + TypeScript + Vite
2
3This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
4
5Currently, two official plugins are available:
6
7- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh
8- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
9
10## React Compiler
11
12The React Compiler is enabled on this template. See [this documentation](https://react.dev/learn/react-compiler) for more information.
13
14Note: This will impact Vite dev & build performances.
15
16## Expanding the ESLint configuration
17
18If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
19
20```js
21export default defineConfig([
22 globalIgnores(['dist']),
23 {
24 files: ['**/*.{ts,tsx}'],
25 extends: [
26 // Other configs...
27
28 // Remove tseslint.configs.recommended and replace with this
29 tseslint.configs.recommendedTypeChecked,
30 // Alternatively, use this for stricter rules
31 tseslint.configs.strictTypeChecked,
32 // Optionally, add this for stylistic rules
33 tseslint.configs.stylisticTypeChecked,
34
35 // Other configs...
36 ],
37 languageOptions: {
38 parserOptions: {
39 project: ['./tsconfig.node.json', './tsconfig.app.json'],
40 tsconfigRootDir: import.meta.dirname,
41 },
42 // other options...
43 },
44 },
45])
46```
47
48You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
49
50```js
51// eslint.config.js
52import reactX from 'eslint-plugin-react-x'
53import reactDom from 'eslint-plugin-react-dom'
54
55export default defineConfig([
56 globalIgnores(['dist']),
57 {
58 files: ['**/*.{ts,tsx}'],
59 extends: [
60 // Other configs...
61 // Enable lint rules for React
62 reactX.configs['recommended-typescript'],
63 // Enable lint rules for React DOM
64 reactDom.configs.recommended,
65 ],
66 languageOptions: {
67 parserOptions: {
68 project: ['./tsconfig.node.json', './tsconfig.app.json'],
69 tsconfigRootDir: import.meta.dirname,
70 },
71 // other options...
72 },
73 },
74])
75```