commitlint.config.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. const fs = require('fs');
  2. const path = require('path');
  3. const { execSync } = require('child_process');
  4. const components = fs
  5. .readdirSync(path.resolve(__dirname, './src/packages/__VUE'), { withFileTypes: true })
  6. .filter((dirent) => dirent.isDirectory())
  7. .map((dirent) => dirent.name);
  8. // precomputed scope
  9. const scopeComplete = execSync('git status --porcelain || true')
  10. .toString()
  11. .trim()
  12. .split('\n')
  13. .find((r) => r.indexOf('M ') !== -1)
  14. ?.replace(/(\/)/g, '%%')
  15. ?.match(/src%%packages%%__VUE%%((\w|-)*)/)?.[1];
  16. /** @type {import('cz-git').UserConfig} */
  17. module.exports = {
  18. extends: ['@commitlint/config-conventional'],
  19. rules: {
  20. 'body-leading-blank': [1, 'always'],
  21. 'footer-leading-blank': [1, 'always'],
  22. 'header-max-length': [2, 'always', 72],
  23. 'scope-case': [2, 'always', 'lower-case'],
  24. 'subject-case': [2, 'never', ['sentence-case', 'start-case', 'pascal-case', 'upper-case']],
  25. 'subject-empty': [2, 'never'],
  26. 'subject-full-stop': [2, 'never', '.'],
  27. 'type-case': [2, 'always', 'lower-case'],
  28. 'type-empty': [2, 'never'],
  29. 'type-enum': [
  30. 2,
  31. 'always',
  32. ['upd', 'chore', 'docs', 'feat', 'fix', 'test', 'refactor', 'revert', 'style', 'release']
  33. ]
  34. },
  35. prompt: {
  36. typesAppend: [{ value: 'upd', name: 'upd: ' }],
  37. customScopesAlign: !scopeComplete ? 'top' : 'bottom',
  38. scopes: [...components],
  39. defaultScope: scopeComplete,
  40. allowCustomIssuePrefixs: false,
  41. allowEmptyIssuePrefixs: false
  42. }
  43. };