概述
在项目早期就引入如 Renovate、ESLint、Prettier、Husky 等开发辅助工具,是为了在开发初期就建立起统一、可维护、高质量的工程基础。具体原因如下:
Renovate
随着项目迭代,依赖版本容易滞后甚至出现安全漏洞。引入 Renovate Bot 可实现:
- 自动检测依赖是否可升级(如 npm、pip、Docker 等)
- 自动创建 PR,便于评审升级内容
- 避免技术债累积,提升依赖可控性
ESLint + Prettier
团队协作中最常见的争议之一就是代码格式问题,引入 ESLint + Prettier 可实现:
- 代码在提交前就被自动格式化、自动修复
- 减少无意义的 PR 差异,提升代码审查效率
- 明确团队风格规范,降低上手门槛
Husky + lint-staged
在每次提交前执行自动检查,可避免把低质量代码推进仓库:
- 检查是否通过 Lint、格式化是否正确
- 只检查改动文件(避免全量 Lint 性能问题)
- 把质量控制“前置”,防止 CI 阶段才发现问题
Renovate Bot
Renovate Bot 是一个开源自动化工具,用于自动检测并更新项目依赖,通过自动发 PR 的方式保持依赖项为最新,支持多种语言和包管理器(如 npm、pip、Go modules、Docker、Gradle 等)。
快速使用
在项目根目录添加一个 renovate.json 文件,例如最小配置如下:
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base"
]
}
等待首次自动 PR
Renovate 会自动发起一次“Onboarding PR”,例如
docs: add renovate.json
你合并这个 PR 后,Renovate 就会开始检测并发送更新 PR。
Lint
Python
Ruff
Ruff 是一个由 Rust 编写的 Python Linter,它的目标是提供极致性能与高兼容性,支持 flake8、isort、pycodestyle、pyflakes 等多个工具的规则。
快速使用
- 安装
pip install ruff
- 配置
配置 ruff(推荐使用 pyproject.toml)
[tool.ruff]
line-length = 100
select = ["E", "F", "I"] # E: pycodestyle, F: pyflakes, I: isort
ignore = ["E501"] # 忽略长行限制
exclude = ["migrations", "venv"]
target-version = "py38"
常用命令
# 检查
ruff check .
# 自动修复
ruff check . --fix
# 检查单个文件或目录
ruff check src/your_file.py
配合 pre-commit 使用
- 安装
pip install pre-commit
- 添加配置文件
.pre-commit-config.yaml
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.12.7 # 根据官方更新版本
hooks:
- id: ruff
args: ["--fix"]
- 安装钩子
pre-commit install
JavaScript / TypeScript
ESLint
ESLint 是一个 JavaScript 和 TypeScript 的代码静态分析工具,用于找出代码中潜在的问题,并可自动修复部分错误。
- 保持统一的代码风格(配合 Prettier)
- 发现语法、逻辑、API 使用上的错误
快速使用
- 安装
pnpm install eslint
eslint --init
- 添加忽略
添加 .eslintignore 忽略不需要 lint 的目录
node_modules
dist
coverage
常用命令
eslint .
eslint . --fix
Husky
Husky 是一个 Git Hooks 工具,允许你在 git commit / push / merge 等操作前后自动运行脚本。
用途包括:
- 提交前自动执行 lint 检查
- 自动运行测试用例
- 禁止推送调试代码
- 统一提交规范(配合 commitlint)
快速使用
- 安装
pnpm install husky
husky install
- 配置
这会创建 .husky/ 目录,并在 package.json 添加
{
"scripts": {
"prepare": "husky install"
}
}