module.exports = {
  extends: ['@commitlint/config-conventional'],
  rules: {
    // 提交消息的类型必须是以下之一
    'type-enum': [
      2, // 错误级别
      'always',
      [
        'feat', // 新功能
        'fix', // 修复问题
        'update', // 更新现有功能
        'docs', // 文档更新
        'style', // 代码格式（不影响功能）
        'refactor', // 重构代码（不影响功能）
        'perf', // 性能优化
        'test', // 添加或修改测试
        'chore', // 杂项更新（比如构建工具）
        'revert', // 回滚提交
        'build', // 构建系统或外部依赖变更
        'ci', // CI/CD 配置或脚本修改
      ],
    ],
    // 允许范围为空
    'scope-empty': [0, 'never'],
    'scope-case': [2, 'always'],
    // 提交消息的主题不能为空
    'subject-empty': [2, 'never'],
    // 不限制提交消息结尾的标点符号
    'subject-full-stop': [0, 'never'],
    // 限制提交消息的主题长度
    'header-max-length': [2, 'always', 72],
    // 'message-case': [2, 'always', 'lower-case'],
  },
  prompt: {
    messages: {
      skip: ':跳过',
      max: '最多输入 %d 个字符',
      min: '至少输入 %d 个字符',
      emptyWarning: '请填写有效内容',
      upperLimitWarning: '长度超过限制',
      lowerLimitWarning: '长度不足',
    },
    questions: {
      type: {
        description: '选择提交类型（如：feat, fix, docs等）',
      },
      scope: {
        description: '影响的模块范围（如：auth, api等，可选）',
      },
      subject: {
        description: '简要描述本次提交（限72个字符以内）',
      },
      body: {
        description: '详细描述本次提交（可选）',
      },
      breaking: {
        description: '列出任何破坏性更新（可选）',
      },
      footer: {
        description: '关联的issue，例如：#123, #456（可选）',
      },
    },
  },
};
