吉特- 布兰克- 林特
用于一致,可执行的 Git 分支命名的 CLI 工具.
目录
说明
@elsikora/git-branch-lint 对照团队规则验证分支名称,并包括交互式分支创建流.
该项目采用分层清洁建筑:
domain- 商业规则、实体、政策、合同application- 使用案例和管弦逻辑infrastructure- 适配器(git,配置装入)presentation- CLI控制器、提示器、格式化器
特征
- 使用占位符进行模板驱动的分支验证(例如)
:type/:name或者说:scope/:type/:description) (中文(简体) ). - 带有图案的可选票号支持
:type/:ticket-:name(线程部分可以省略). - 交互式分支创建命令( I)
-b编号 :--branch直接取自已配置的占位符. - 分支限制:被禁名,分/最大长度,被禁名.
- 帮助 CLI 错误/ 提示格式化 .
- 基于Cosmiconfig的配置发现.
安装
安装为 dev 依赖 :
npm install --save-dev @elsikora/git-branch-lint
或其他软件包管理器:
yarn add -D @elsikora/git-branch-lint
pnpm add -D @elsikora/git-branch-lint
bun add -d @elsikora/git-branch-lint
使用量
验证当前分支 :
npx @elsikora/git-branch-lint
启动交互式分支创建 :
npx @elsikora/git-branch-lint -b
# or
npx @elsikora/git-branch-lint --branch
行为说明:
- 何时
:ticket存在于branch-pattern,这两个表格都是有效的:- 随票:
feature/proj-123-user-authentication - 无票:
feature/user-authentication
- 随票:
- 交互快取在分支创建前将出票标识规范为小写 .
- 占位符提示来自
branch-pattern依所宣说之序. - 验证和分支创建使用相同的模板/模式规则.
配置
配置通过 cosmiconfig (例如 package.json, (中文(简体) ), .elsikora/git-branch-lint.config.js, (中文(简体) ), .elsikora/git-branch-lint.config.ts) (中文(简体) ).
规则语义 :
branch-pattern定义占位符:placeholder标志.- 占位符命名支持小写字母、数字和连字符(例如)
:jira-ticket) (中文(简体) ). :type对照配置验证branches。 。 。 .branch-subject-pattern支持:string- 对所有非 --type占位符 .object- 每个占位键的正则x(例如)scope, (中文(简体) ),description, (中文(简体) ),ticket) (中文(简体) ).
- 可选占位符在符号后面被支持
-内branch-pattern(例如:ticket-) (中文(简体) ). - 在分支创建前,最终组装名称再次被验证,并有完整的林特规则.
Java 脚本示例
export default {
branches: {
feature: { title: "Feature", description: "New functionality" },
bugfix: { title: "Bugfix", description: "Bug fixes" },
hotfix: { title: "Hotfix", description: "Urgent fixes" },
},
ignore: ["dev"],
rules: {
"branch-pattern": ":type/:ticket-:name",
"branch-subject-pattern": "[a-z0-9-]+",
"branch-prohibited": ["main", "master", "release"],
"branch-min-length": 5,
"branch-max-length": 50,
},
};
高级占位符示例
export default {
branches: ["feat", "fix", "chore"],
rules: {
"branch-pattern": ":scope/:type/:description",
"branch-subject-pattern": {
scope: "(web|api|shared)",
description: "[a-z0-9-]+",
},
},
};
有效的分支示例 : web/feat/shopping-cart。 。 。 .
类型脚本示例
import type { IBranchLintConfig } from "@elsikora/git-branch-lint";
const config: IBranchLintConfig = {
branches: {
feature: { title: "Feature", description: "New functionality" },
bugfix: { title: "Bugfix", description: "Bug fixes" },
hotfix: { title: "Hotfix", description: "Urgent fixes" },
},
ignore: ["dev"],
rules: {
"branch-pattern": ":type/:ticket-:name",
"branch-subject-pattern": "[a-z0-9-]+",
"branch-prohibited": ["main", "master", "release"],
"branch-min-length": 5,
"branch-max-length": 50,
},
};
export default config;
package.json 示例
{
"elsikora": {
"git-branch-lint": {
"branches": ["feature", "bugfix", "hotfix"],
"rules": {
"branch-pattern": ":type/:ticket-:name",
"branch-subject-pattern": "[a-z0-9-]+",
"branch-prohibited": ["main", "master", "release"]
}
}
}
}
清洁建筑规则
此代码库中执行的仓库标准 :
- 商业规则
domain并且通过application使用大小写. presentation它不能拥有商业验证规则.infrastructure只包含适配器;默认域规则在适配器执行之外被定义.application取决于域合同,而不是具体基础设施类别.- 类型/界面被取入专用类型/界面文件,以便可重复使用.
- 进口订单和班级成员订单是强制性的,必须始终如一.
发展
常见脚本 :
npm run lint
npm run lint:types
npm run test:unit
npm run test:e2e
许可证
麻省理工学院. 见 LICENSE。 。 。 .