VSCode集成Lint-staged实现自动格式化

雨墨小哥_6364

雨墨小哥_6364

2026-10-20

945人浏览

原创

lint-staged 本身不监听 git 操作,仅是执行器,必须由 husky 在 pre-commit 钩子中调用才能生效;若未运行 npx husky install 或 .husky/pre-commit 中未正确配置 npx lint-staged,则提交时无任何反应。

vscode集成lint-staged实现自动格式化

为什么 lint-staged 要配合 Husky 才能生效

因为 lint-staged 本身不监听 Git 操作,它只是个“执行器”:只对暂存区(git add 后的文件)跑命令,不会自动触发。没 Husky,它就永远等不到被调用的时机。

常见错误现象是:配好了 lint-staged,也写了 prettier --write,但 git commit 时完全没反应——大概率是 Husky 的 pre-commit 钩子没装好或没启用。

  • 运行 npx husky-init 或 npx husky install 是必须步骤,否则 .husky/ 目录不会生成
  • .husky/pre-commit 文件里必须包含可执行命令,比如 npx lint-staged(注意不是 npm run lint-staged)
  • Windows 用户若用 Git Bash 提交,需确认钩子文件有执行权限;PowerShell 下可能需额外设置 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

lint-staged 配置中通配符和命令顺序很关键

lint-staged 不是全局扫文件,它严格按你写的 glob 模式匹配暂存文件,且命令数组是**顺序执行**的——前一个命令改了文件,后一个命令才能看到新内容。

典型陷阱:把 "prettier --write" 和 "git add" 写反了,或者漏掉 git add,会导致格式化后的变更没进暂存区,commit 仍提交旧代码。

VSCode
VSCode

避免常见的 VSCode 错误——设置冲突、调试器配置和扩展冲突。

下载
  • 推荐写法:"*.{js,ts,jsx,tsx}": ["prettier --write", "git add"]
  • 如果同时用 ESLint 修复,顺序应为 ["eslint --fix", "prettier --write", "git add"],避免 Prettier 格式化后 ESLint 又报风格警告
  • 不要写 "**/*.{js,ts}" —— lint-staged 默认只查暂存文件,**/ 多余且可能匹配失败;直接用 *.{js,ts} 更稳

VSCode 保存格式化和 lint-staged 的分工要分清

VSCode 的 editor.formatOnSave 是本地开发体验优化,而 lint-staged 是团队准入卡点。两者共存时,容易因配置冲突导致重复格式化、光标跳动或保存变慢。

最常被忽略的一点:VSCode 保存时若已用 Prettier 格式化过,lint-staged 再跑一次其实是冗余的——除非你允许开发者跳过保存直接 commit。

  • 建议 VSCode 配置中明确限定语言范围,比如:"[javascript]": { "editor.formatOnSave": true },避免对 JSON、CSS 等非逻辑文件误触发
  • 禁用 editor.formatOnSave 全局开关,改用语言专属配置,能减少与 lint-staged 的行为重叠
  • 如果项目强制要求提交即规范,可考虑关掉 VSCode 保存格式化,只依赖 lint-staged —— 这样所有格式化行为都集中、可审计、不因人而异

prettier --write 在 lint-staged 中的实际执行路径

lint-staged 调用 prettier --write 时,不会读取 VSCode 插件里的设置,而是**只认项目根目录下的 .prettierrc、prettier.config.js 或 package.json 中的 prettier 字段**。

很多人配了 VSCode 的 settings.json 以为就够了,结果 commit 时格式还是不对——因为 lint-staged 根本不看那个文件。

  • 务必在项目根目录放一份 .prettierrc,内容如:{"semi": true, "singleQuote": true, "trailingComma": "es5"}
  • 如果用 prettier.config.js,注意导出必须是 module.exports = {...},ESM 语法(export default)在 Node.js
  • CI 环境中若没装 Prettier 依赖,lint-staged 会直接失败,所以 prettier 必须是 devDependencies
真正难搞的不是配通,而是让不同人的编辑器、不同系统的 Git、不同版本的 Prettier 对同一份代码产生完全一致的输出——这需要所有配置文件落地、所有工具版本锁死、所有钩子路径清晰可验证。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.02

6379

3

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.08.29

3085

6

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

2025.08.29

3988

10

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

2025.08.29

2765

10

vscode是什么_vscode怎么安装配置
vscode是什么_vscode怎么安装配置

VS Code(Visual Studio Code)是一款免费、开源的跨平台代码编辑器,由微软开发和维护。它被广泛用于软件开发和编程,支持多种编程语言和框架。VS Code 同时提供了丰富的功能和扩展性,使开发者可以高效地编写、编辑和调试代码。

2023.06.30

1395

18

vscode怎么运行代码
vscode怎么运行代码

vscode是一个运行于MacOS X、Windows和Linux之上的,针对于编写现代Web和云应用的跨平台源代码编辑器;vscode免费而且功能强大,对JavaScript和NodeJS的支持非常好,自带很多功能,例如代码格式化,代码智能提示补全、Emmet插件等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.21

2932

3

vscode使用的框架介绍
vscode使用的框架介绍

VSCode是一款跨平台代码编辑器,它基于Electron框架和Monaco Editor构建。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.14

1989

12

vscode一般用来写什么语言
vscode一般用来写什么语言

VSCode是一款功能强大的代码编辑器,支持多种编程语言和文件格式。它内置对 JavaScript、Python、Java、C++、TypeScript、HTML/CSS、Go 等语言的支持。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.14

1727

8

vscode可以写什么语言
vscode可以写什么语言

vscode是一款强大的代码编辑器,支持多种编程语言的开发。通过安装扩展,可以为 JavaScript/TypeScript、Python、Java、C#、PHP、Go、Ruby、Rust、HTML/CSS 等语言提供智能代码补全、调试和格式化等功能。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

2607

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程