当前位置: 首页 > article >正文

【react进阶】create-react-app的项目工程格式化和eslint校验配置

在团队合作中,规范必须是要约束的,每个人都有自己的习惯,需要达成共识,规范书写格式,不能各自按各自的方式来,乱套了就不方便项目代码的管理。

确保node版本是18.18以上,配合最新版的eslint的校验有效,非ts项目的

package.json

{
	"name": "react18_app2",
	"version": "0.1.0",
	"private": true,
	"dependencies": {
		"@testing-library/jest-dom": "^5.17.0",
		"@testing-library/react": "^13.4.0",
		"@testing-library/user-event": "^13.5.0",
		"husky": "^9.1.7",
		"prettier": "^3.4.2",
		"react": "^18.0.0",
		"react-dom": "^18.0.0",
		"react-scripts": "5.0.1",
		"sass": "^1.83.1",
		"web-vitals": "^2.1.4"
	},
	"scripts": {
		"start": "craco start ",
		"build": "craco build",
		"test": "craco  test",
		"eject": "react-scripts eject",
		"lint": "eslint src  -c eslint.config.mjs --fix",
		"prepare": "husky",
		"lint:lint-staged": "lint-staged"
	},
	"browserslist": {
		"production": [
			">0.2%",
			"not dead",
			"not op_mini all"
		],
		"development": [
			"last 1 chrome version",
			"last 1 firefox version",
			"last 1 safari version"
		]
	},
	"devDependencies": {
		"@craco/craco": "^7.1.0",
		"lint-staged": "^15.3.0"
	},
	"lint-staged": {
		"src/**/*.{ts,tsx,js,jsx}": [
			"prettier --write",
			"eslint -c eslint.config.mjs --fix",
			"git add"
		]
	}
}

vscode插件安装

  • vscode两个必备的插件
    在这里插入图片描述
    在这里插入图片描述

  • 修改vscode里面的用户设置

    settings.jsonprettier配置参考

{
	"prettier.singleQuote": true,
	"prettier.jsxSingleQuote": true,
	"prettier.semi": false,
	"prettier.useTabs": true,
	"prettier.tabWidth": 4,
	"prettier.printWidth": 120,
	"prettier.bracketSameLine": true,
	"editor.defaultFormatter": "esbenp.prettier-vscode",
	"editor.codeActionsOnSave": {
		"source.fixAll.eslint": "always"
	},
	"editor.formatOnSave": true,
	"eslint.format.enable": false
}

然后这样,就能保证代码在保存的时候进行美化了。注意:eslint是用来限制代码规范的,prettier是用来美化代码的格式。

eslint的配置

  • eslint配置官网
npm init @eslint/config@latest

在这里插入图片描述
生成了这样一个默认的配置文件。

添加自定义配置规则

import globals from 'globals'
import pluginJs from '@eslint/js'
import pluginReact from 'eslint-plugin-react'

/** @type {import('eslint').Linter.Config[]} */
export default [
	{ files: ['**/*.{js,mjs,cjs,jsx}'] },
	{ languageOptions: { globals: globals.browser } },
	pluginJs.configs.recommended,
	pluginReact.configs.flat.recommended,
	{
		rules: {
			'react/prop-types': 'off',
			'react/react-in-jsx-scope': 'off',
			'no-undef': 'off',
		},
	},
]
  • 安装husky,和lint-stage

添加配置项

  • 在这里插入图片描述
    在这里插入图片描述

测试效果

  • 目标是,写完代码后,保存双引号改为单引号,去掉末尾分号
    请添加图片描述
  • commit提交后校验不规范的代码
    请添加图片描述

报错且提交未成功,是因为开启了no-unused-vars,默认是true,关闭这个配置即可
在这里插入图片描述
再次commit
请添加图片描述
提交成功


http://www.kler.cn/a/502340.html

相关文章:

  • 【前端】【CSS3】基础入门知识
  • G-Star Landscape 2.0 重磅发布,助力开源生态再升级
  • HarmonyOS:@LocalBuilder装饰器: 维持组件父子关系
  • 微服务的配置共享
  • ES6的高阶语法特性
  • C语言的小项目-简易计算器
  • 充电桩的GB39752和GB44263标准测试要求
  • 【网络协议】ACL(访问控制列表)第一部分
  • Go可以使用设计模式,但绝不是《设计模式》中的那样
  • 可编辑精品PPT | 城投集团(行业)数字化解决方案
  • Spring底层核心原理解析
  • Qt之http客户端类
  • Golang——协程同步
  • flink kafka 版本对照表
  • 给DevOps加点料:融入安全性的DevSecOps
  • linux---Nginx详细教程(包含安装,网站部署)
  • 2008-2020年各省社会消费品零售总额数据
  • vim基本命令(vi、工作模式、普通模式、插入模式、可视模式、命令行模式、复制、粘贴、插入、删除、查找、替换)
  • PHP答题考试系统:智慧教育的璀璨明珠
  • pyqt鸟瞰
  • 【三维数域】三维数据调度-负载均衡和资源优化
  • 2023-2024 学年 广东省职业院校技能大赛(高职组)“信息安全管理与评估”赛题一
  • 面经学习-操作系统-上下文切换
  • 服务器出现蓝屏现象的原因有什么?
  • Java URLClassLoader类来动态加载数据库驱动jar
  • Linux的用户管理