conventional-changelog/commitlint

Plugins should be provided with git diff

Aberta

#3.408 aberto em 17 de out. de 2022

 (2 comentários) (2 reações) (0 responsável)TypeScript (896 forks)batch import
featurehelp wanted

Métricas do repositório

Stars
 (15.497 estrelas)
Métricas de merge de PR
 (Mesclagem média 12h 56m) (52 fundiu PRs em 30d)

Description

This is a feature request to provide the output of changed files, such as git diff --cached --name-only --diff-filter=ACM. The purpose of this feature is to provide a way to verify if changes described within a conventional commit's scope are actually all within that scope.

Expected Behavior

Naive example:

plugin: {
  rules: {
    'bounded-scope': (parsed) => {
      console.log(parsed.diff);
      const scope = parsed.scope;

      if (scope === 'test1') {
        changedStartsWithScope = parsed.diff.every((path) => path.startsWith('apps/test1'));
        return [changedStartsWithScope, 'all files with scope test1 should start with apps/test1'];
      }

      return [true];
    }
  }
}

echo "feat(test1): random subject" | npm run commitlint
[ '.gitignore', 'apps/test1/testing.js' ]
⧗   input: feat(test1): random subject
✖   all files with scope test1 should start with apps/test1 [scope-bounded]

✖   found 1 problems, 0 warnings

Current Behavior

No way of determining which files have been changed by the commit.

Affected packages

  • cli
  • core
  • prompt
  • config-angular

Context

I'm trying to create a plugin which queries Nx to determine if the changes in the commit match the scope provided, otherwise requiring you to not specify a scope.

Guia do colaborador