name: 编码标准执行器 description: 使用linters、formatters和pre-commit hooks自动化代码风格执行,以确保一致的代码库 license: MIT metadata: adapted-by: ai-skills category: 代码质量
编码标准执行器
自动化代码质量和一致性检查,使用linters、formatters和hooks。
ESLint 配置
// .eslintrc.js
module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:react/recommended',
'prettier'
],
rules: {
'no-console': 'warn',
'@typescript-eslint/no-unused-vars': 'error',
'@typescript-eslint/explicit-function-return-type': 'warn',
'react/prop-types': 'off',
'complexity': ['warn', 10],
'max-lines-per-function': ['warn', 50]
}
};
Prettier 配置
{
"semi": true,
"singleQuote": true,
"trailingComma": "es5",
"printWidth": 100,
"tabWidth": 2,
"arrowParens": "avoid"
}
预提交钩子
// package.json
{
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.{ts,tsx}": [
"eslint --fix",
"prettier --write"
],
"*.{json,md}": [
"prettier --write"
]
}
}
Git 钩子设置
# 安装 husky
npm install --save-dev husky lint-staged
# 初始化 husky
npx husky install
# 添加预提交钩子
npx husky add .husky/pre-commit "npx lint-staged"
命名约定
// PascalCase 用于类和类型
class UserService {}
type UserData = {};
// camelCase 用于函数和变量
function getUserById() {}
const userName = 'John';
// UPPER_SNAKE_CASE 用于常量
const MAX_RETRY_COUNT = 3;
const API_BASE_URL = 'https://api.example.com';
// kebab-case 用于文件
// user-service.ts
// api-client.ts
集成点
补充:
- verification-loop: 用于预提交验证
- tdd-workflow: 用于测试标准
- code-refactoring-patterns: 用于样式改进