灶台大了,酱料也要备多一点才行呀
关于目录
- 关于几个常见文件
- 关于 eslint、prettier 配置
- 关于 Git hooks
- 关于总结
关于几个常见文件
一般项目内容易看到
| poject/| --.vscode/ // vscode 的配置| --.husky/ // 存放 git commit 规则| --.eslintrc.json // eslint 规则| --.eslintignore.json // 可忽略 eslint 的规则或文件| --.editorconfig // 存放编码规则,一般用于告诉编辑器当前的编码规则| --.prettierrc.json // prettier 规则| --.prettierignore.json // 可忽略 prettier 的文件关于 eslint、prettier 配置
ESLint 快速配置
# 安装yarn add eslint --dev# 默认配置yarn create @eslint/configprettier 快速配置
# 安装yarn add --dev --exact prettier# 默认配置echo {}> .prettierrc.jsonecho # Ignore > .prettierignoreTIP: .prettierrrc.json 个人配置
{ "printWidth": 80, "jsxSingleQuote": true, "tabWidth": 2, "semi": false, "singleQuote": true, "trailingComma": "all", "jsxBracketSameLine": true, "bracketSpacing": true, "proseWrap": "preserve", "arrowParens": "avoid", "htmlWhitespaceSensitivity": "css", "quoteProps": "as-needed"}善用 prettier 的 git hooks
这是为了保证每次提交之前运行 Prettier:
- 安装 husky 和 lint-staged:
yarn add --dev husky lint-stagednpx husky installnpm set-script prepare "husky install"npx husky add .husky/pre-commit "npx lint-staged"- 将以下内容添加到您的 package.json:
{ "lint-staged": { "**/*": "prettier --write --ignore-unknown" }}视情况使用.vscode 配置
TIP: 各自判断是否需要强制
{ "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.fixAll.eslint": true }}关于 commit rule
几个插件
| 插件 | 说明 |
|---|---|
| commitizen | 定义提交规则和传达规则的标准方式 |
| @commitlint/cli | 检查提交消息是否符合传统的提交格式 |
| @commitlint/config-conventional | 配置提交常规 |
| @commitlint/cz-commitlint | 提供交互提交信息 |
# 项目内下载yarn add -D commitizen @commitlint/cli @commitlint/config-conventional @commitlint/cz-commitlint
# 配置文件生成echo "module.exports = { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js使用交互式提交,需要在 package.json 中新增如下配置
{ "config": { "commitizen": { "path": "@commitlint/cz-commitlint" } }}由于是项目内使用,为配合其他同事的使用,需要配合 package.json 中 scripts 或者使用 yarn git-cz 来使用
{ "scripts": { "commit": "git-cz" }}自定义提交交互信息
module.exports = { extends: ['@commitlint/config-conventional'], prompt: { questions: { type: { description: '选择要提交的更改类型', enum: { feat: { description: '新功能', title: 'Features', emoji: '✨', }, fix: { description: 'bug 修复', title: 'Bug Fixes', emoji: '🐛', }, docs: { description: '仅文档更改', title: 'Documentation', emoji: '📚', }, style: { description: '不影响代码逻辑的更改(空格、格式、缺少分号等)', title: 'Styles', emoji: '💎', }, refactor: { description: '重构,既不修复 Bug 也不添加功能的代码更改', title: 'Code Refactoring', emoji: '📦', }, perf: { description: '性能优化', title: 'Performance Improvements', emoji: '🚀', }, test: { description: '新增测试或更正现有测试', title: 'Tests', emoji: '🚨', }, build: { description: '影响构建系统或外部依赖项的更改(示例范围:yarn、npm)', title: 'Builds', emoji: '🛠', }, ci: { description: '对 CI 配置文件和脚本的更改(example scopes: Travis, Circle, BrowserStack, SauceLabs)', title: 'Continuous Integrations', emoji: '⚙️', }, chore: { description: '其他不修改 src 或测试文件的更改', title: 'Chores', emoji: '♻️', }, revert: { description: '撤銷、復原一次 git commit', title: 'Reverts', emoji: '🗑', }, }, }, scope: { description: '请说明更改具体范围(例如组件或文件名)', }, subject: { description: '请简短描述的该变化', }, body: { description: '请提供更改的详细说明', }, isBreaking: { description: '是否有重大更改?', }, breakingBody: { description: '重大更改提交需要特殊说明。请输入提交本身的详细描述', }, breaking: { description: '描述重大更改', }, isIssueAffected: { description: '此更改是否会影响未解决的问题?', }, issuesBody: { description: '如果问题已关闭,则提交需要一个主体。请输入提交本身的较长描述', }, issues: { description: '添加问题引用(例如,“修复 #123”、“修改 #123”。', }, }, },}结合 git hook 即可强制要求了
在 .husky/ 下新增 commit-msg(可自定义名字) 文件
npx husky add .husky/commit-msg "npx --no-install commitlint --edit "" "关于总结
项目愈发庞大,就愈发需要一些规范,来规范团队之间的协作
当然对于个人一开始多少会有阵痛,但阵痛过后,彼此协作更加顺畅,岂不也是美哉
参考文章