【实战】 项目起航:项目初始化与配置 —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(一)

news/2024/7/15 17:23:25 标签: react.js, 前端, 前端框架

文章目录

    • 一、项目起航:项目初始化与配置
      • 1.项目初始化 —— create-react-app
      • 2.格式化 —— Prettier
      • 3.提交规范 —— commitlint
      • 4.Mock —— json-server


学习内容来源:React + React Hook + TS 最佳实践-慕课网


相对原教程,我在学习开始时(2023.03)采用的是当前最新版本:

版本
react & react-dom^18.2.0
react-router & react-router-dom^6.11.2
antd^4.24.8
@commitlint/cli & @commitlint/config-conventional^17.4.4
eslint-config-prettier^8.6.0
husky^8.0.3
lint-staged^13.1.2
prettier2.8.4
json-server0.17.2
craco-less^2.0.0
@craco/craco^7.1.0
qs^6.11.0
dayjs^1.11.7
react-helmet^6.1.0
@types/react-helmet^6.1.6
react-query^6.1.0
@welldone-software/why-did-you-render^7.0.1
@emotion/react & @emotion/styled^11.10.6

具体配置、操作和内容会有差异,“坑”也会有所不同。。。


一、项目起航:项目初始化与配置

1.项目初始化 —— create-react-app

npx create-react-app jira --template typescript
  • baseUrl 配置
{
  "compilerOptions": {
    "baseUrl": "./src",
    ...
  }
  ...
}

重新配置后,若是项目已启动,则需要重启才能生效

2.格式化 —— Prettier

  • 为确保所有项目参与人员统一格式化代码,项目中引入 Prettier 依赖
npm install --save-dev --save-exact prettier

Prettier 中文网 · Prettier 是一个“有态度”的代码格式化工具

  • 创建配置文件:.prettierrc.json(windows 的 powershell 输入内容需要加引号)
echo {}> .prettierrc.json
  • 创建格式化黑名单文件:.prettierignore
# cmd
(echo # Ignore artifacts:& echo build& echo coverage)> .prettierignore
# bash
echo -e "# Ignore artifacts:\nbuild\ncoverage"> .prettierignore

prettierignore,powershell请新建文件后直接输入以下内容:

# Ignore artifacts:
build
coverage
  • 为了使格式化操作在每次提交代码时(pre-commit)自动执行,需要安装依赖:husky & lint-staged
npx mrm@2 lint-staged

执行这行命令会同时安装 husky 和 lint-stage,并自动配置 package.json: "prepare": "husky install" 生成 .husky/pre-commit.husky/_/husky.sh 文件,免除了手动配置

  • Pre-commit Hook · Prettier 中文网
  • 为避免 prettier 与项目原有 eslint 的冲突,还需要安装依赖:eslint-config-prettier
npm install --save-dev eslint-config-prettier
  • 在 package.json 的 eslint 配置尾部添加 "prettier" (若有 eslintrc 单独配置文件,同):
  ...
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest",
      "prettier"
    ]
  },
  ...

prettier 会覆盖掉冲突的原有 eslint 规则

  • Prettier 和 ESLint 冲突解决方案 eslint-config-prettier eslint-plugin-prettier - 彭成刚 - 博客园

步骤完成后尝试将正常代码格式破坏(比如随机删去tsx文件的几个换行),进行一次代码提交,提交信息随意尝试,查看提交后代码是否被格式化还原之前正常格式

tips:尝试后记得撤回提交哦!

3.提交规范 —— commitlint

接下来规范 commit message:

npm install --save-dev @commitlint/config-conventional @commitlint/cli

生成 commitlint.config.js,并配置内容:

# cmd
echo module.exports = { extends: ['@commitlint/config-conventional'] }; > commitlint.config.js
# bash
echo "module.exports = { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js
  • 激活 husky
npx husky install
  • 在 husky 中添加 hook —— commit-msg
# bash
npx husky add .husky/commit-msg  'npx --no -- commitlint --edit ${1}'

windows 的 cmd 或 powershell 中会报错,具体可参考:

  • 【已解决】npx husky add 执行失败

经过这一步后,代码提交如果不规范就会提交失败啦,结果日志如下:

> git -c user.useConfigOnly=true commit --quiet --allow-empty-message --file -
[34m→[39m No staged files match any configured task.
⧗   input: 我掐指一算,这次提交会报错
✖   subject may not be empty [subject-empty]
✖   type may not be empty [type-empty]

✖   found 2 problems, 0 warnings
ⓘ   Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint

husky - commit-msg hook exited with code 1 (error)

具体提交规范可参考文章:

【笔记】项目优化代码提交规范 —— commitlint+husky

或者 commitlint 官网文档和 github:

  • commitlint - Lint commit messages
  • conventional-changelog/commitlint: 📓 Lint commit messagesdetails/129241273)

4.Mock —— json-server

一般开发过程中,前后端是并行的,这就意味着前端开发时是没有接口调用的,这时就涉及到了 Mock 的问题,不同方案对比可参考:

【笔记】不同 Mock 方案的对比及选择

这里选用 json-server

  • 安装 json-server
npm i -g json-server
  • 创建数据源文件
mkdir __json_server_mock__
cd ./__json_server_mock__
# bash
touch db.json
# cmd
cd.>db.json
  • 在 package.json 中新增 scripts 配置:
  "scripts": {
    "json-server": "json-server __json_server_mock__/db.json -w -p 3001"
  },

项目启动默认在 3000 端口,因此把 json-server 端口改为其他: 3001

命令行中输入以下命令启动 json-server:

npm run json-server

接下来可以自行尝试 json-server 的妙用,可参考:

  • 【笔记】json-server实战

一切就绪,可以开发啦!


http://www.niftyadmin.cn/n/437129.html

相关文章

金融风控项目实战-银行信用卡流失预测模型_基于ANN神经网络_金融培训_论文科研_毕业设计

业务背景 根据央行公布的数据显示,全国性银行信用卡和借贷合一卡的发卡量增速从2017年同比增速26.35%的高点逐年下降,截至2020年同比增速降至4.26%。银行信用卡发卡增速明显放缓的背景下,预防老客户流失的问题变得愈发重要。 假设一家消费信…

小程序开发基础:WXML、WXSS、JavaScript基础语法(中)

WXSS语言的基本语法 WXSS(WeiXin Style Sheets)是一种样式表语言,用于小程序的开发和界面渲染。作为小程序开发的另一个基础技术,掌握WXSS的基本语法和规则,能够帮助开发人员快速开发出美观、高效的小程序应用。 一、…

redis学习 -- 常用指令

应用场景 String :缓存,限流,计数器,分布式锁,分布式session Hash:存储y用户信息,用户主页访问量,组合查询 List:关注人时间轴列 Set:点赞,标签&…

工作笔记存档

1:容器中查日志 cd /usr/local/tomcat/logs grep -i "07-12 09:37.*" zte-iscp-ieam-assetapi* grep -i ""异步发送统一审批请求异常"" zte-iscp-ieam-assetapi* 2:gerrit提交 git commit -m RDC:DT…

rk3588 编译(使用公有源码)和烧录(sd、emmc)

# 使用 github 上的代码进行编译 这些代码和其他板卡厂商提供的略有不同,以此为准 https://github.com/rockchip-linux/rkbin https://github.com/rockchip-linux/u-boot https://github.com/rockchip-linux/kernel // 将分支切换到 5.10 再下载 下载他们的压缩包 …

mysql 批量修改表列名为大小写

根据表名 修改为小写 SELECT concat( alter table , TABLE_NAME, change column , COLUMN_NAME, , LOWER( COLUMN_NAME ), , COLUMN_TYPE, comment \, COLUMN_COMMENT, \; ) AS 修改脚本 FROM information_schema.COLUMNS WHERE TABLE_NAME 表名; 根据库名 修改为小写 …

Charles Windows10使用 证书安装 过期重设 证书加入到受信任根目录 配置访问WhatsApp

普通教程文档 抓包神器 Charles 使用教程详解 - 知乎 界面选项详细讲解 Charles的功能介绍与使用教程,一学就会,不信就来试试? 疑难杂症 由于CA 根证书不在“受信任的根证书颁发机构”存储区中,所以它不受信任 1、winr 运行…

6、共享模型之无锁

6.2 cas 与 volatile 前面看到的 AtomicInteger 的解决方法,内部并没有用锁来保护共享变量的线程安全。那么它是如何实现的呢? volatile 为什么无锁比synchronize效率高 CAS特点 6.3 原子整数 6.4 原理引用 6.5 原子数组 AtomicIntegerArrayAtom…