前端项目添加代码规范(eslint prettier stylelint husky lint-staged commitlint)

简介: 前端项目添加代码规范(eslint prettier stylelint husky lint-staged commitlint)

image.png


本文已参与「新人创作礼」活动,一起开启掘金创作之路。

关键词: 代码规范 eslint prettier stylelint husky lint-staged commitlint vite react

项目demo源码


环境准备


vite 快速搭建一个 react 项目。


pnpm create vite react-app -- --template react-ts
git init

vscodeprettier 会有很多默认配置,可以通过 CTRL + , 快捷键进入配置界面进行管理,所有修改后的结果会保存在 settings.json 文件里。在根目录新建 .vscode 文件夹,里面提供一个 settings.json,k可以为项目单独配置。


eslint: 对代码进行校验


  1. 在项目内安装 eslint 及相关的包
  2. vscode 安装 eslint 插件
pnpm add -D eslint 
# 按照项目情况进行配置
pnpm create @eslint/config 
# eslint-plugin-react-hooks 用于检查 Hook 代码是否符合使用规则的插件。
pnpm add -D eslint-plugin-react-hooks
# 测试
npx eslint ./src/App.tsx
.eslintrc.cjs 添加配置。


"extends": [
  // ...
  "plugin:react-hooks/recommended",
],
"plugins": [
  // ...
  "react-hooks"
],
"rules": {
  // ...
  "react/prop-types": "off",
}

prettier: 对代码进行格式化


# eslint-config-prettier 解决冲突,关掉与 `Prettier` 产生冲突的 `ESlint` 格式相关配置。
# eslint-plugin-prettier 解决冲突后希望通过 `Eslint` 自动保存。
pnpm add -D prettier eslint-config-prettier eslint-plugin-prettier 
.eslintrc.cjs 中添加 prettier 相关配置
extends: [
  "prettier",
  "plugin:prettier/recommended"
],
plugins: [ "prettier"],


// .eslintrc.js 全量
module.exports = {
  env: {
    browser: true,
    es2021: true,
    node: true,
  },
  extends: [
    "eslint:recommended",
    "plugin:react/recommended",
    "plugin:react-hooks/recommended",
    "plugin:@typescript-eslint/recommended",
    "prettier",
    "plugin:prettier/recommended",
  ],
  overrides: [],
  parser: "@typescript-eslint/parser",
  parserOptions: {
    ecmaVersion: "latest",
    sourceType: "module",
  },
  plugins: ["react", "@typescript-eslint", "react-hooks", "prettier"],
  rules: {
    "react/prop-types": "off",
  },
};

配置 .prettierrc

json

// https://www.prettier.cn/docs/configuration.html
{
  "semi": false,
  "tabWidth": 2,
  "trailingComma": "none",
  "singleQuote": true,
  "arrowParens": "avoid"
}

配置 .eslintignore.prettierignore

bash

*.sh
node_modules
*.md
*.woff
*.ttf
.vscode
.idea
dist
/public
/docs
.husky
.local
/bin
.eslintrc.js
.prettierrc.js
/src/mock/*

package.json 添加对应脚本


{
  "scripts": {
    "lint:eslint": "eslint --fix --ext .js,.ts,.tsx ./src",
    "lint:prettier": "prettier --write --loglevel warn \"src/**/*.{js,ts,json,tsx,css,less,scss,html,md}\""
  }
}

运行这两句脚本看看效果。


stylelint: 对样式书写规范进行校验


在进入正文之前,先处理浏览器兼容问题

vite 默认集成 postcss,所以直接安装其他依赖进行配置。webpack 需要单独安装一下。

sh

复制代码

pnpm add -D less autoprefixer postcss-less
*.css 文件名改成 *.less。配置 vite.config.ts


import autoprefixer from "autoprefixer";
export default defineConfig({
  css: {
    postcss: {
      plugins: [autoprefixer],
    },
  },
});

进入正文,添加 stylelint 相关依赖。

  • stylelint-less
  • stylelint-config-prettier 关闭所有不必要的或可能与Prettier冲突的规则。确保将其放在 extends 队列最后,这样它将覆盖其他配置。
  • stylelint-config-standard 官网提供的 css 标准

其他推荐安装插件:

  • stylelint-config-recess-order 属性排列顺序
pnpm add -D stylelint stylelint-less stylelint-config-prettier stylelint-config-standard
配置 .stylelintignore .stylelintrc.cjs


// @see: https://stylelint.io
module.exports = {
  extends: [
    "stylelint-config-standard", // 配置stylelint拓展插件
    "stylelint-config-prettier", // 配置stylelint和prettier兼容
  ],
  "overrides": [
    {
      "files": ["**/*.less"],
      "customSyntax": require("postcss-less"),
      "rules": {
        'comment-empty-line-before': null,
        'declaration-empty-line-before': null,
        'function-name-case': 'lower',
        'no-descending-specificity': null,
        'no-invalid-double-slash-comments': null,
        'rule-empty-line-before': 'always',
      }
    }
  ],
  plugins: ["stylelint-less"], // 配置stylelint less拓展插件
  rules: {}
};


# .stylelintignore
node_modules
dist

添加对应脚本


// package.json
{
  "scripts": {
    "lint:stylelint": "stylelint --cache --fix \"**/*.{less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
  }
}

lint-staged + husky: 代码提交进行校验


  • lint-staged 本地暂存代码检查工具
  • husky 操作 git 钩子的工具


pnpm add lint-staged husky -D
# 在 package.json 中添加脚本
npm set-script prepare "husky install"
# 初始化husky 将 git hooks 钩子交由 husky 执行
pnpm prepare
npx husky add .husky/pre-commit "npx lint-staged"
# package.json 添加 lint-staged 脚本
npm set-script lint-staged "lint-staged"

根目录创建 .lintstagedrc.json 进行配置,或者通过 lint-staged.config.js 进行配置。

{
  "*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write"],
  "{!(package)*.json,*.code-snippets,.!(browserslist)*rc}": ["prettier --write--parser json"],
  "package.json": ["prettier --write"],
  "*.{scss,less,styl}": ["stylelint --fix", "prettier --write"],
  "*.md": ["prettier --write"]
}

commit 阶段的消息模板

  • commitlint commit 信息校验工具 (@commitlint/cli、@commitlint/config-conventional)
  • commitizen 辅助 commit 信息 ,就像这样,通过选择输入,规范提交信息 commit 提交时,信息模板的依赖 cz-git 指南
pnpm add @commitlint/cli @commitlint/config-conventional -D
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'
# 安装辅助提交依赖
pnpm i commitizen cz-git -D
# 安装指令和命令行的展示信息
npm set-script commit "git-cz" # package.json 中添加 commit 指令, 执行 `git-cz` 指令
添加 commitlint.config.cjs 并且配置


module.exports = {
  extends: ['@commitlint/config-conventional'],
  rules: {
    'type-enum': [
      2,
      'always',
      [
        'ci',
        'docs',
        'feat',
        'fix',
        'perf',
        'refactor',
        'build',
        'chore',
        'revert',
        'style',
        'test'
      ]
    ],
    'type-empty': [2, 'never'], // <type> 不能为空
    'type-case': [0],
    'scope-empty': [0],
    'scope-case': [0],
    'subject-empty': [2, 'never'], // <subject> 不能为空 (默认)
    'subject-full-stop': [0, 'never'],
    'subject-case': [0, 'never'],
    'header-max-length': [0, 'always', 72]
  }
}

package.json 中,将原来 commit 配置,变更为自定义配置:


"config": {
    "commitizen": {
        "path": "node_modules/cz-git"
    }
}

参考资料:

vite: vitejs.cn/config/#con…

husky + lint-staged + commitlint + eslint + prettier 统一前端代码规范及commit规范: juejin.cn/post/704768…

前端工程化:Prettier+ESLint+lint-staged+commitlint+Hooks+CI 自动化配置处理: juejin.cn/post/707489…

推荐阅读:

总是被嫌弃代码不规范?你可能需要这个工具: juejin.cn/post/712419…

工具:github.com/lyh0371/web…

目录
相关文章
|
前端开发 JavaScript 测试技术
前端研发链路之代码规范
大家好,我是徐徐。本文将探讨前端研发链路中的代码规范,包括业界流行规范、CSS命名规范和相关工具。通过保持代码整洁和一致性,不仅能提高团队协作效率,还能减少错误,提升开发质量。文中详细对比了几种常见的代码规范和工具,如 Airbnb Style Guide、BEM、Eslint 和 Prettier,并展望了未来代码规范的发展趋势。希望对大家有所帮助。
525 1
前端研发链路之代码规范
|
前端开发 JavaScript 开发者
前端项目代码规范工具 (ESLint. Prettier. Stylelint. TypeScript)
前端项目代码规范工具 (ESLint. Prettier. Stylelint. TypeScript)
1334 4
|
前端开发 开发工具 git
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
466 5
|
前端开发 JavaScript 开发工具
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(三)
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(三)
233 0
|
Web App开发 前端开发 JavaScript
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(二)
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(二)
354 0
|
Web App开发 移动开发 前端开发
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(一)
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(一)
529 0
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
1716 14
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
1133 0
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
903 6

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    1356
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    636
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    500
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    493
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    602
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    787
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1550
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    360
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1263
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    606