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

这篇具有很好参考价值的文章主要介绍了【实战】一、项目起航:项目初始化与配置 —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


学习内容来源: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
prettier 2.8.4
json-server 0.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实战

一切就绪,可以开发啦!文章来源地址https://www.toymoban.com/news/detail-531013.html

到了这里,关于【实战】一、项目起航:项目初始化与配置 —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序项目初始化配置

    注:该文章用于记录或学习交流 微信小程序项目初始化配置准备,包括项目创建,基础路径配置,组件库安装,接口请求封装,部分实用组件封装等 创建初始项目后,对项目文件结构重新梳理 注:目录结构根据个人需求创建,assets和static文件夹的区别详见 assets与static的区别

    2023年04月08日
    浏览(73)
  • React refers to UMD global, but the current file is a module vite初始化react项目

    初始化项目 在执行完上面的命令后,npm 首先会自动下载create-vite这个第三方包,然后执行这个包中的项目初始化逻辑。输入项目名称之后按下回车,此时需要选择构建的前端框架: 选中react后们还有个选项,我们选择typescript 切换到项目按照依赖后跑起来   React refers to UMD

    2024年02月09日
    浏览(38)
  • react-Native init初始化项目报错”TypeError: cli.init is not a function“

    在react-native init appDemo 创建项目时,报错TypeError: cli.init is not a function。 产生这个问题的原因是:使用这种方式创建工程,react-native版本是0.69 版本上不适用。可以检查下自己安装的React-native的版本。 使用: npx react-native init Demo --version 0.68.2 即可。 解决方法不好用的话,那就

    2024年02月15日
    浏览(35)
  • 从零开始基于go-zero的go web项目实战-01项目初始化

    导语 Go 是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,go语言的特点: 语法简洁 Go语言简单易学,学习曲线平缓 代码风格统一 执行性能好 开发效率高 等等… 在Go语言中,有很多高性能的web框架:gin、beego、iris等。作为后起之秀,近年来

    2024年02月16日
    浏览(40)
  • 17 数组动态初始化

            动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。         格式:数据类型[] 数组名 = new 数据类型[数组长度]         实验结果:   

    2024年02月16日
    浏览(31)
  • 【go零基础】go-zero从零基础学习到实战教程 - 2项目初始化

    到项目初始化过程了,这边的项目设计完全按照作者自己的喜好来进行定义和设置的,所以各位完全可以按照自己的偏好自喜设置哈。 首先是创建一个工作文件夹哈。 别问为啥不直接quickstart,因为quickstart生成的api名字是greet,改起来很麻烦(头秃)。 注1: go-zero-demo是我随便

    2024年04月26日
    浏览(33)
  • 【vue3项目初始化配置】vue3 + element plus

    项目初始化是开发过程中很重要的一个环节,本篇博客带大家从零开始创建并初始化一个vue3项目,文章详细介绍了每个步骤,希望能帮助刚接触开发的小伙伴。 目录 一.创建项目 二.安装插件  ​编辑 ​编辑三.安装依赖 ​编辑 ​编辑四.配置项目 配置vu.config.js文件  配置

    2024年01月18日
    浏览(61)
  • 『pyqt5 从0基础开始项目实战』06. 获取选中多行table 重新初始化数据(保姆级图文)

    欢迎关注 『pyqt5 从0基础开始项目实战』 专栏,持续更新中 欢迎关注 『pyqt5 从0基础开始项目实战』 专栏,持续更新中 请查阅上文获取源码,此处只列举第三方库 新增点击事件 .clicked.connect 我们这里的处理也包括包括选中多行的情况 在主函数中给线程传入需要的参数 获取

    2023年04月16日
    浏览(43)
  • vite初始化vue3项目(配置自动格式化工具与git提交规范工具)

    初始化项目 vite构建vue项目还是比较简单的,简单配置选择一下就行了 初始化命令 初始化最新版本vue项目 2. 基本选项含义 Add TypeScript 是否添加TS ADD JSX是否支持JSX ADD Vue Router是否添加Vue Router路由管理工具 ADD Pinia 是否添加pinia(状态管理工具) Add ESLinit 是否添加ESLint是否添加

    2024年02月12日
    浏览(46)
  • 17. C++ static、const 和 static const 类型成员变量声明以及初始化

    1. C++ static、const 和 static const 类型成员变量声明以及初始化 const 定义的常量在超出其作用域之后其空间会被释放; static 定义的静态常量在函数执行后不会释放其存储空间; 1.2 static static 表示的是静态的 类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对

    2024年01月18日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包