Several front-end formatting tools worth knowing in 2023 [Summary]
In the big front-end era, various front-end tool chains are constantly emerging, including eslint
, prettier
, husky
, commitlint
etc. Sometimes it’s trouble
??? when there are too many things. How to use this correctly is something every front-end developer needs to master. Please get on board? ??
eslint
This front-end engineering project is based on react. The same is true for vue users, except that individual dependency packages are different.
Use the ecological chain of eslint
to standardize developers’ specifications for the basic syntax of js/ts
. Prevent team members from writing randomly.
The main eslint packages used here are the following:
"eslint": "^8.33.0", // 这个是eslint的主包 "eslint-plugin-react": "^7.32.2", // 这是react基于eslint来做的语法规范插件 "eslint-plugin-react-hooks": "^4.6.0", // 这是 react-hooks 语法基于eslint做的插件 "@typescript-eslint/eslint-plugin": "^5.50.0", // typescript 基于eslint来做的插件 "@typescript-eslint/parser": "^5.50.0", // typescript 基于eslint做的语法解析器,使得eslint可以约束ts语法
Use the following statements to follow the dependencies:
pnpm i eslint eslint-plugin-react eslint-plugin-react-hooks @typescript-eslint/parser @typescript-eslint/eslint-plugin -D
Next You need to write the eslint specifications into the configuration file. You can create a .eslintrc.cjs
module.exports = { 'env': { 'node': true, // 标志当前的环境,不然使用module.exports 会报错 'es2021': true }, extends: [ 'eslint:recommended', // 使用eslint推荐的语法规范 'plugin:react/recommended', // react推荐的语法规范 'plugin:@typescript-eslint/recommended' // ts推荐的语法规范 ], parser: '@typescript-eslint/parser', // 使用解析器来解析ts的代码,使得eslint可以规范ts的代码 parserOptions: { ecmaFeatures: { jsx: true // 允许使用jsx的语法 }, ecmaVersion: 'latest', // es的版本为最新版本 sourceType: 'module' // 代码的模块化方式,使用module的模块方式 }, plugins: ['react', '@typescript-eslint', 'react-hooks'], // 使用对应的react, react-hooks, @typescript-eslint 等插件 rules: { quotes: ['error', 'single'], // 配置单引号的规则,如果不是单引号,报错 semi: 'off', // 不需要使用分号; 'react/react-in-jsx-scope': 'off' // 在jsx中不需要导入 react的包 } }
in the root directory of the project. Next, add a command to the scripts of package.json
"lint": "eslint --ext .ts,.tsx,.js,.jsx ./" // 使用eslint 规范 ts,tsx,js,jsx的代码
Effect
The non-standard format in the code is exposed. Now you can repair and format the code. But in terms of formatting code,
prettier
does a better job, so let’s useprettier
to format the code
prettier
prettier
is an open source code formatting package that supports a variety of code writing tools, including common vscode
, webstorm
, etc., it all supports , so how to integrate it?
Use the following statement to install dependencies:
pnpm i prettier eslint-plugin-prettier eslint-config-prettier
Let me explain below what these packages are used for, otherwise you will install them by mistake
"prettier": "^2.8.3", // prettier 主包 "eslint-config-prettier": "^8.6.0", // eslint 和prettier的共同配置 "eslint-plugin-prettier": "^4.2.1", // 在eslint当中,使用prettier为插件,才能一起使用
After installing the dependencies, We also need to add the prettier configuration to eslitrc.cjs
as follows:
{ extends:[ ..., + 'prettier', // prettier + 'plugin:prettier/recommended' // prettier推荐的配置 ], + plugins:[...,'prettier'], rules: { + 'prettier/prettier': 'error', // eslint 和prettier 用prettier的错误 } }
Next, add a script to package.json
+ "prettier": "eslint --fix --ext .ts,.tsx,.js,.jsx --quiet ./"
At this time, we also need to configure which files do not need to be code formatted, so create .prettierignore
under the root directory and add the following content:
node_modules package.json pnpm-lock.yaml dist
Effect
The repair was successful, but a warning was reported here. The solution is as follows:
Add the previous configuration at the end of eslintrc.cjs
as follows:
+ settings: { + react: { + version: 'detect' + } + }
Configuring automatic formatting
Every time I need to execute the script in the terminal, it is a bit complicated. Can I set automatic formatting?
The answer is yes
- Open settings
- Enter
fomatter
, then select Text Compiler, selectprettier-Code formatter
- ##Then search
- formate on save
, select it
Presshusky Until the above, Just use code formatting tools and code specification checks. These are local, so we still need to perform prettier operations before committing when submitting the code, so there is no need to do it manually. Use the script to install the following dependency packagesctrl s
will automatically format the code???
pnpm i husky -D
husky## in the terminal through
npx husky install
#We also need to generate the
hook to execute npm run lint
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>npx husky add .husky/pre-commit "npm run lint" // 这句话的意思是说,在commit之前先执行 npm run lint脚本</pre><div class="contentsignin">Copy after login</div></div>
After the installation is completed, it will be in the .husky directory Add a new file in
It should be noted that we need to register
package.json prepare
command, after the project is pnpm i
, Huksy
can be installed. The command is as follows:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>+ "prepare": "husky install"</pre><div class="contentsignin">Copy after login</div></div><blockquote><p>上面咱们是自己手动 <code>npx husky install
的,我们需要让后面使用咱们配置的人自动来初始化 husky
但是大家如果再深入一步,就会想到???。既然我内容都管控好了,是不是需要把 commit -m 'xxx'
中的msg
也管控下呀???
使用下面的命令来安装包:
pnpm i commitlint @commitlint/cli @commitlint/config-conventional -D
包意思解析
"@commitlint/cli": "^17.4.2", // 规范提交信息 "@commitlint/config-conventional": "^17.4.2", // commitlint 常用的msg配置 "commitlint": "^17.4.2" // commitlint 主包
安装好这些包后,需要在根目录添加一个 .commitlintrc.cjs
来配置咱们的commitlint
的配置:
module.exports = { extends: ['@commitlint/config-conventional'] }
有了这些配置,commit是否生效呢?
答案是
no
, 还需要在git hooks
中添加一个方法
在终端执行下面的命令
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'
然后会在.husky
中生成一个新的文件commit-msg
效果
接下来就是见证奇迹的时刻???
对于乱写commit 信息就过不了哦???
lint-staged
对于细心的同学可能会发现,我们每一次提交都会 prettier
整个目录的所有问题,大大的降低了咱们编码的速度。所以咱们还需要做一件事情,那就是 只格式化需要提交的代码,其他的就不需要格式化了
使用下面命令安装依赖
pnpm i lint-staged -D
然后在package.json
中新增如下内容
+ "lint-staged": { + "**/*.{js,jsx,tsx,ts}": [ + "eslint --fix" + ] + }
上面那段脚本的意思是 只对
.js,.jsx, .ts,.tsx
后缀文件进行eslint的修复,其他的就不进行格式化和修复了
有了这个,还需要对 pre-commit
这个钩子就行修改内容
#!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" - npm run lint + npx --no -- lint-staged
如此就大功告成啦???
(学习视频分享:web前端入门)
The above is the detailed content of Several front-end formatting tools worth knowing in 2023 [Summary]. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



SpringDataJPA is based on the JPA architecture and interacts with the database through mapping, ORM and transaction management. Its repository provides CRUD operations, and derived queries simplify database access. Additionally, it uses lazy loading to only retrieve data when necessary, thus improving performance.

Paper address: https://arxiv.org/abs/2307.09283 Code address: https://github.com/THU-MIG/RepViTRepViT performs well in the mobile ViT architecture and shows significant advantages. Next, we explore the contributions of this study. It is mentioned in the article that lightweight ViTs generally perform better than lightweight CNNs on visual tasks, mainly due to their multi-head self-attention module (MSHA) that allows the model to learn global representations. However, the architectural differences between lightweight ViTs and lightweight CNNs have not been fully studied. In this study, the authors integrated lightweight ViTs into the effective

The learning curve of the Go framework architecture depends on familiarity with the Go language and back-end development and the complexity of the chosen framework: a good understanding of the basics of the Go language. It helps to have backend development experience. Frameworks that differ in complexity lead to differences in learning curves.

JavaScript tutorial: How to get HTTP status code, specific code examples are required. Preface: In web development, data interaction with the server is often involved. When communicating with the server, we often need to obtain the returned HTTP status code to determine whether the operation is successful, and perform corresponding processing based on different status codes. This article will teach you how to use JavaScript to obtain HTTP status codes and provide some practical code examples. Using XMLHttpRequest

1. Architecture of Llama3 In this series of articles, we implement llama3 from scratch. The overall architecture of Llama3: Picture the model parameters of Llama3: Let's take a look at the actual values of these parameters in the Llama3 model. Picture [1] Context window (context-window) When instantiating the LlaMa class, the variable max_seq_len defines context-window. There are other parameters in the class, but this parameter is most directly related to the transformer model. The max_seq_len here is 8K. Picture [2] Vocabulary-size and AttentionL

An in-depth analysis of the architecture and working principles of the Spring framework Introduction: Spring is one of the most popular open source frameworks in the Java ecosystem. It not only provides a powerful set of container management and dependency injection functions, but also provides many other functions, such as transactions. Management, AOP, data access, etc. This article will provide an in-depth analysis of the architecture and working principles of the Spring framework, and explain related concepts through specific code examples. 1. Core concepts of the Spring framework 1.1IoC (Inversion of Control) Core of Spring

Written above & the author’s personal understanding: Recently, with the development and breakthroughs of deep learning technology, large-scale foundation models (Foundation Models) have achieved significant results in the fields of natural language processing and computer vision. The application of basic models in autonomous driving also has great development prospects, which can improve the understanding and reasoning of scenarios. Through pre-training on rich language and visual data, the basic model can understand and interpret various elements in autonomous driving scenarios and perform reasoning, providing language and action commands for driving decision-making and planning. The base model can be data augmented with an understanding of the driving scenario to provide those rare feasible features in long-tail distributions that are unlikely to be encountered during routine driving and data collection.

Introduction to the method of obtaining HTTP status code in JavaScript: In front-end development, we often need to deal with the interaction with the back-end interface, and HTTP status code is a very important part of it. Understanding and obtaining HTTP status codes helps us better handle the data returned by the interface. This article will introduce how to use JavaScript to obtain HTTP status codes and provide specific code examples. 1. What is HTTP status code? HTTP status code means that when the browser initiates a request to the server, the service