@govbr-ds/config-tools v3.1.0
GovBR-DS - Config Tools
Objetivo
Compartilhar os padrões de commit e release entre os projetos do GovBR-DS.
Importante
Os exemplos abaixo estão usando o pnpm (consulte a documentação da ferramenta para mais detalhes). Caso prefira utilizar o npm só é necessário substituir os comandos pnpm pelos npm equivalentes.
Como instalar
Instale os seguintes pacotes:
pnpm add -D @govbr-ds/config-tools husky lint-staged prettier @commitlint/cz-commitlint
Commitlint
Configurações para o Commitlint.
Crie um arquivo
commitlint.config.js
na raiz do seu projeto e e importe a configuração:module.exports = { extends: ['./node_modules/@govbr-ds/commit-config/src/commitlint.cjs'], }
Para sobrescrever alguam configuração siga o padrão do Commitlint.
Inclua o seguinte código no seu
package.json
"scripts": { ... "commit": "git-cz", ... }, ... "config": { ... "commitizen": { "path": "@commitlint/cz-commitlint" } ... }
Conforme a documentação do Husky inclua o hook
commit-msg
com o código abaixo:pnpm exec -- commitlint --edit $1
Sugerimos usar o estágio abaixo no .gitlab-ci.yml para fazer as validações no gitlab.com
Commits: stage: Qualidade artifacts: when: always paths: - report-commitlint.txt expire_in: 1 week expose_as: 'Commitlint Report' script: - pnpm dlx commitlint-gitlab-ci -x ./src/commitlint.cjs > report-commitlint.txt rules: - when: always
Semantic Release
Configurações para o Semantic Release.
Crie um arquivo
release.config.js
na raiz do seu projeto e importe os plugins que deseja usar:const { branches, commitAnalyzer, releaseNotesGenerator, changelog, gitlab, git } = require('./node_modules/@govbr-ds/commit-config/src/semantic-release.cjs') module.exports = { branches: branches, plugins: [ commitAnalyzer, releaseNotesGenerator, changelog, gitlab, git, ... ], }
Para sobrescrever alguma configuração siga o padrão do Semantic Release. A ordem definida será a ordem de execução!
Sugerimos usar o estágio abaixo no .gitlab-ci.yml para gerar as releaes gitlab.com
Semantic Release: stage: Release before_script: - pnpm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN} script: - pnpm exec semantic-release rules: - if: '$CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "next" || $CI_COMMIT_REF_NAME =~ /\\d.(\\d|x).(\\d|x)(-alpha)?$/ || $CI_COMMIT_REF_NAME =~ /alpha$/' when: manual
Markdown lint
Configurações para o Markdownlint e também usamos o Markdownlint-cli.
Crie um arquivo
.markdownlint.yml
na raiz do seu projeto e extenda a configuração:extends: './node_modules/@govbr-ds/config-tools/src/markdownlint.yml'
Crie um arquivo
.markdownlintignore
na raiz do seu projeto e inclua os arquivos e pastas que deseja ignorar da validação de markdown:CHANGELOG.MD /node_modules
Quando o CHANGELOG.md é gerado automaticamente é recomendável o excluir da validação.
Inclua o seguinte código no seu
package.json
"scripts": { ... "lint:md": "markdownlint -d --fix **/*.md", ... }, ... "lint-staged": { "*.md": [ "prettier --write", "markdownlint -d --fix **/*.md" ] },
Conforme a documentação do Husky inclua o hook
pre-commit
com o código abaixo:pnpm exec -- lint-staged
Sugerimos usar o estágio abaixo no .gitlab-ci.yml para fazer as validações no gitlab.com
Markdown: stage: Qualidade artifacts: when: always paths: - report-markdownlint.txt expire_in: 1 week expose_as: 'Markdownlint Report' script: - pnpm exec markdownlint '**/*.md' -o report-markdownlint.txt rules: - when: always
gitlab-ci.yml
Para usar o pnpm no gitlab-ci.yml usamos o seguinte código para cuidar dos preparativos:
Instalar dependências:
stage: Dependências
script:
- apk --no-cache add git
- npm i -g pnpm
- pnpm install
rules:
- when: always
Como contribuir?
Antes de abrir um Merge Request tenha em mente algumas informações:
- Esse é um projeto opensource e contribuições são bem-vindas.
- Para facilitar a aprovação da sua contribuição, escolha um título curto, simples e explicativo para o MR, e siga os padrões da nossa wiki.
- Quer contribuir com o projeto? Confira o nosso guia como contribuir.
Reportar bugs/necessidades
Você pode usar as issues para nos informar os problemas que tem enfrentado ao usar nossa biblioteca ou mesmo o que gostaria que fizesse parte do projeto. Por favor use o modelo que mais se encaixa na sua necessidade e preencha com o máximo de detalhes possível.
Nos comprometemos a responder a todas as issues
Precisa de ajuda?
Por favor não crie issues para fazer perguntas...
Use nossos canais abaixo para obter tirar suas dúvidas:
Site do GovBR-DS http://gov.br/ds
Usando nosso canal no discord https://discord.gg/U5GwPfqhUP
Padrão de commits
Para mais informações sobre o padrão de commits consulte a nossa Wiki.
Licença
Nesse projeto usamos a licença MIT.