React + Ts项目搭建

article/2025/7/29 6:53:27

一、安装react+ts

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

二、安装eslint代码检测

一个好的项目必须有一个规范,所以得安装eslint代码检测

yarn add eslint
npx eslint --init

eslint初始化后会出现三个项目,根据项目而定

1、使用什么样的eslint?(这里我选择3)

To check syntax only // 只检测语法性错误
To check syntax and find problems // 检查语法错误并发现问题代码
To check syntax, find problems, and enforce code style // 检查语法错误,发现问题代码,校验代码风格

2、项目使用什么类型的模块?(这里我选择1)

JavaScript modules (import/export) // 允许import/export
CommonJS (require/exports) // 允许require/exports
None of these // 没有任何模块化

3、项目使用哪个框架?(选择1)

React
Vue.js
None of these

4、项目使用Ts?(Yes)

Does your project use TypeScript? › No / Yes

5、代码运行环境?(浏览器)

Browser // 浏览器
Node // node环境

6、如何定义项目定义样式?(使用流行的风格指南)

Use a popular style guide // 使用流行的风格指南
Answer questions about your style // 问答定义形成一个风格

7、遵循哪一种流行风格?(可以根据自己项目所需定义,我选Airbnb)

Airbnb: https://github.com/airbnb/javascript
Standard: https://github.com/standard/standard
Google: https://github.com/google/eslint-config-google
XO: https://github.com/xojs/eslint-config-xo

8、你希望你的配置文件是什么格式的?(JavaScript,其它的可以自行百度)

JavaScript
YAML
JSON

9、你现在就安装他们吗?(Yes,yarn)

npm
yarn
pnpm

安装完成后会在项目根目录生成.eslitrc.js文件,然后改一下规则(可以根据自己需求增减规则)

module.exports = {env: {browser: true,es2021: true,},extends: ['plugin:react/recommended','airbnb',],parser: '@typescript-eslint/parser',parserOptions: {ecmaFeatures: {tsx: true,},ecmaVersion: 'latest',sourceType: 'module',},plugins: ['react','@typescript-eslint',],rules: {'react/jsx-filename-extension': [2,{ 'extensions': ['ts', 'tsx'] }],'import/no-unresolved': 0,'import/extensions': 0,// 最后一个对象属性要有逗号'comma-dangle': 1,// 定义但从未使用的变量'no-unused-vars': 1,// 赋值但从未使用'react/jsx-no-bind': 1,// 空标签'react/self-closing-comp': 0,// 具有单击处理程序的可见非交互元素必须至少有一个键盘侦听器'jsx-a11y/click-events-have-key-events': 0,// 具有“按钮”交互作用的元素必须是可聚焦的'jsx-a11y/interactive-supports-focus': 0,// 带有事件处理程序的静态HTML元素需要一个角色'jsx-a11y/no-static-element-interactions': 0,// return ;'semi-spacing': 0,// <>只包含不能只包含一个标签'react/jsx-no-useless-fragment': 0,// 值对于布尔属性必须省略'react/jsx-boolean-value': 0,// 必须默认导出'import/prefer-default-export': 0,// 默认变量放到最后一个'default-param-last': 0,// 对参数进行赋值'no-param-reassign': 0,// 使用未声明的函数'no-use-before-define': 0,'no-new': 0,// 不能使用自增'no-plusplus': 0,// button必须是静态type'react/button-has-type': 0,},
};

三、安装customize-cra

customize-cra是依赖于react-app-rewired的库,通过config-overrides.js来修改底层的webpack,label配置。

1、安装依赖

yarn add react-app-rewired customize-cra --save-dev

四、安装node-sass

1、安装node-sass插件并安装资源加载器(做全局scss引用)

yarn add node-sass
yarn add sass-resources-loader // 资源加载器

2、先改package.json文件(找到scripts改为如下代码)

"scripts": {"start": "react-app-rewired start","build": "react-app-rewired build","test": "react-app-rewired test","eject": "react-scripts eject"
},

3、根目录下创建config-overrides.js文件(此时我的项目文件结构如下图)
在这里插入图片描述

4、添加全局scss(在config-overrides.js文件下添加如下代码)

const {override,addWebpackModuleRule,
} = require('customize-cra');module.exports = override(// scss全局变量addWebpackModuleRule({test: /\.scss$/,use: ['style-loader','css-loader','sass-loader',{loader: 'sass-resources-loader',options: {// 注意在项目中新增/src/assets/scss/varable.scss文件resources: ['./src/assets/scss/varable.scss'],},},],}),
);

5、添加@别名指向src目录(React默认没有像vue有@别名)修改config-overrides.js文件,代码如下

const {override,addWebpackAlias,addWebpackModuleRule,
} = require('customize-cra');
const path = require('path');module.exports = override(// @别名addWebpackAlias({'@': path.resolve('./src'),}),// scss全局变量addWebpackModuleRule({test: /\.scss$/,use: ['style-loader','css-loader','sass-loader',{loader: 'sass-resources-loader',options: {resources: ['./src/assets/scss/varable.scss'],},},],}),
);

然后在根目录下tsconfig.json文件更改代码如下

{"compilerOptions": {"baseUrl": ".","paths": {"@/*": ["./src/*"]},"target": "es5","lib": ["dom","dom.iterable","esnext"],"allowJs": true,"skipLibCheck": true,"esModuleInterop": true,"allowSyntheticDefaultImports": true,"strict": true,"forceConsistentCasingInFileNames": true,"noFallthroughCasesInSwitch": true,"module": "esnext","moduleResolution": "node","resolveJsonModule": true,"isolatedModules": true,"noEmit": true,"jsx": "react-jsx"},"include": ["src"]
}

6、开发环境打开devloop配置,为了更好定位代码中报错(修改config-overrides.js),代码如下

const {override,addWebpackAlias,addWebpackModuleRule,
} = require('customize-cra');
const path = require('path');module.exports = override((config) => {config.devtool = config.mode === 'development' ? 'cheap-module-source-map' : false;return config;},// @别名addWebpackAlias({'@': path.resolve('./src'),}),// scss全局变量addWebpackModuleRule({test: /\.scss$/,use: ['style-loader','css-loader','sass-loader',{loader: 'sass-resources-loader',options: {resources: ['./src/assets/scss/varable.scss'],},},],}),
);

五、项目运行

因为直接开启eslist的缘故,所以直接运行会报eslist,默认的项目这里需要更改两个地方

1、App.tsx文件更改为

import React from 'react';
import logo from './logo.svg';
import './App.css';function App() {return (<div className="App"><header className="App-header"><img src={logo} className="App-logo" alt="logo" /><aclassName="App-link"href="https://reactjs.org"target="_blank"rel="noopener noreferrer">Learn React</a></header></div>);
}export default App;

2、reportWebVitals.ts

import { ReportHandler } from 'web-vitals';const reportWebVitals = (onPerfEntry?: ReportHandler) => {if (onPerfEntry && onPerfEntry instanceof Function) {import('web-vitals').then(({getCLS,getFID,getFCP,getLCP,getTTFB,}) => {getCLS(onPerfEntry);getFID(onPerfEntry);getFCP(onPerfEntry);getLCP(onPerfEntry);getTTFB(onPerfEntry);});}
};export default reportWebVitals;

3、之后直接yarn start运行项目即可,如果发现有不合适的地方欢迎大家指出,共同学习

六、参考文献

1、 https://zh-hans.reactjs.org/docs/static-type-checking.html
2、 http://www.manongjc.com/detail/19-dkgrbjlrjsfttjz.html


http://chatgpt.dhexx.cn/article/sMAUiulm.shtml

相关文章

搭建react项目 搭建ts react项目 使用vite搭建react项目

创建react 项目 注意&#xff1a; 网上有一些生成react 的方法&#xff0c;但是也有一些是过时的。 使用官方脚手架creact-react-app 全局安装 creact-react-app 这个脚手架 这个脚手架和 vue 的 vue-cli是一样的&#xff0c;都可以全局安装&#xff0c;命令&#xff1a; npm…

搭建React项目,超简单教程

步骤 前言一、安装create-react-app二、使用步骤1.创建项目2.运行项目3.文件目录 总结 前言 最近公司闲的无聊&#xff0c;刚好之前学的React&#xff0c;至今还未搭建过一个React项目&#xff0c;借这空闲时间来练练手&#xff0c;从0开始搭建React项目&#xff0c;以此来记录…

React项目框架搭建

一、.前置环境安装 确认已安装安装Node.js “在项目开发中需要使用NPM包管理工具&#xff0c;而NPM运行在node.js上面&#xff0c; 所以需要先安装node.js。通过npm可以很方便的安装、共享、分发代码&#xff0c;管理项目依赖关系&#xff1b;通过运行“npm install 包名”几乎…

react项目的搭建与启动

react项目的搭建与启动 准备工作&#xff08;环境的搭建&#xff09;react项目创建与启动常用插件安装Sass/Scss安装 准备工作&#xff08;环境的搭建&#xff09; &#xff08;已经准备好的这一步可以跳过&#xff09; 1.安装Node.js&#xff08;安装一直选择下一步就行&…

react项目搭建(基础学习笔记)

react项目搭建&#xff08;基础学习&#xff09; 安装 局部安装 1、npm init -y或yarn init -y初始化项目 2、全局安装creact-react-app。使用npm install -D create-react-app或yarn add -D create-react-app。使用npx create-react-app --version查看安装的版本号。 3、…

React项目搭建的基本流程

一&#xff0c;版本号 React不同版本之间语法差别还是挺大的&#xff0c;这里放上我项目中的版本号仅供参考 二&#xff0c;项目目录搭建 通过脚手架创建项目&#xff1a; npx-create-react-app 项目名称 1.基本的目录结构 先进行项目初始化&#xff0c;删除项目原始的样式…

react项目搭建--相对较全面

前言&#xff1a;简单记录一下第一次搭建react项目框架&#xff0c;之前只是在已搭建好的框架内去开发实现项目&#xff0c;没有自己动手搭建过&#xff0c;亲自动手实际操作&#xff0c;还遇到挺多问题的。参考了不少文献&#xff0c;帮助我解决并完成整个项目搭建的文献&…

从零开始搭建react项目(一)

自学react有一段时间了&#xff0c;官网文档基础的看了一遍&#xff0c;然后便把之前公司做的一个vue项目用react搭建了下&#xff0c;顺便整理下一些知识点。 项目大概效果&#xff1a; 一、利用create-react-app搭建项目 1、全局安装create-react-app&#xff0c;执行&…

React项目搭建

一、创建项目 1、cmd切换到目标文件夹 2、初始化项目 npx create-react-app init-mobile 3、切换到对应目录根据提示启动项目 二、配置项目文件目录 调整项目中src目录结构如下&#xff1a; 三、引入组件库antd-mobile 1、安装 npm install --save antd-mobilenext 2、在…

思科路由器开启DNS解析

一、DNS服务端、DNS中继 R2(config)# interface FastEthernet0/0 R2(config-if)# ip address 192.168.1.254 255.255.255.0 R2(config)# interface FastEthernet0/1 R2(config-if)# ip address 22.1.1.2 255.255.255.0 R2(config)# router ospf 1 R2(config-router)# net…

IIS DNS服务器搭建

1——IIS&#xff08;因特网信息服务&#xff09;&#xff0c;IIS意味着你能发布网页&#xff0c;在没有配置服务器之前就用IP访问。步骤步骤 开始---》控制面板---》添加或删除程序---》双击应用程序服务器---》选择IIS、控制台 我这里&#xff0c;顺便双击了网络服务---》添加…

Wireshark实验 - DNS

Wireshark实验 - DNS 官方英文文档&#xff1a;Wireshark_Intro_v6.01.pdf Wireshark 实验: DNS v6.01 《计算机网络&#xff1a;自顶向下方法&#xff08;第6版&#xff09;》补充材料&#xff0c;J.F. Kurose and K.W. Ross “不闻不若闻之&#xff0c;闻之不若见之&#…

内网DNS重要使用作用

DNS服务简介&#xff1a; DNS(Domain Name System–域名系统),是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便地访问互联网。是一个应用层的协议DNS使用TCP和UDP端口53。 DNS是一个分布式数据库,命名系统采用层次的逻辑结构…

DNS和SMTP

目录 SMTP 因特网中的电子邮件 ​一个简单的例子 什么是SMTP SMTP的缺点 用SMTP传输一个邮件的过程 SMTP是如何将一个报文从发送邮件服务器传送到接收邮件服务器的。 SMTP与HTTP的区别 共同点 不同点 邮件报文格式 邮件访问协议 POP3 IMAP 基于Web的电子邮件 D…

什么是DNS?为什么选择UDP?详细的DNS解析过程?

DNS DNS1、DNS是什么&#xff1f;2、因特网的域名结构3、缓存&#xff08;Cache)4、 DNS请求实例 DNS 1、DNS是什么&#xff1f; DNS ( Domain Name Systme)简单理解就是解析器、域名服务器的组合&#xff0c;比如大家访问知乎&#xff0c;会输入http://www.zhihu.com&#x…

怎么选最快dns服务器,dns设置(dns设置哪个最好最快)

dns设置(dns设置哪个最好最快)我们知道影响上网速度的因素有很多&#xff0c;硬件、软件等都是高速上网的基础&#xff0c;每个人都希望自家的网速越来快&#xff0c;在相同的硬件、带宽固定的情况下&#xff0c;如何来择优选择上网参数中的DNS服务器呢&#xff1f; DNS服务是网…

如何查找最近最快的dns服务器,如何可以选择适合自己的最快的DNS服务器?

应邀回答本行业问题。 使用三大运营商的宽带网络&#xff0c;默认的DNS就是最快的DNS。访问DNS的快慢&#xff0c;和DNS服务器的响应速度&#xff0c;以及往返时延有关。 我们访问一个DNS的时延&#xff0c;是DNS服务器的响应时延&#xff0c;加上终端到服务器的往返时延&#…

DNS 域名解析

介绍域名 网域名称&#xff08;英语&#xff1a;Domain Name&#xff0c;简称&#xff1a;Domain&#xff09;&#xff0c;简称域名、网域。 域名是互联网上某一台计算机或计算机组的名称。 域名可以说是一个 IP 地址的代称&#xff0c;目的是为了便于记忆。例如&#xff0c…

DNS 服务器选择

DNS 服务器选择 重要的事情写到前面&#xff0c;因为现在是快餐文化&#xff0c;快餐阅读&#xff0c;没有人愿意静下心研究和和阅读了。 本文主要介绍了一些DNS的测试速度&#xff0c;不介意直接拿去使用&#xff0c;如需使用还需要自己测试才行&#xff0c;就算我们找到了最…

怎么选最快dns服务器,如何选择适合自己的最快的DNS服务器?-

DNS在平时上网扮演着重要的角色&#xff0c;如果不注意DNS的话&#xff0c;可能会导致网速慢、弹出广告、网址打不开等一系列问题。那么有哪些比较好的DNS服务器呢&#xff1f;参考下图。 默认情况下&#xff0c;我们使用运营商分配的DNS&#xff0c;也可以使用公共DNS&#xf…