# `setup-commitlint-husky-automator`

Um pacote CLI simples para automatizar a configuração do [Husky](https://typicode.github.io/husky/) e [Commitlint](https://commitlint.js.org/) em seus projetos Git.

## 🚀 Visão Geral

Este pacote foi criado para simplificar o processo de configuração de Git Hooks com Husky para impor a padronização de mensagens de commit usando o Commitlint. Em vez de executar múltiplos comandos manuais para instalar dependências e configurar arquivos, esta ferramenta faz tudo por você!

## ✨ Por que usar?

* **Automação**: Instala automaticamente as dependências necessárias e configura o Git Hook `commit-msg`.

* **Consistência**: Garante que todas as mensagens de commit em seu projeto sigam as [Convenções de Commits](https://www.conventionalcommits.org/en/v1.0.0/) (via `@commitlint/config-conventional`).

* **Produtividade**: Economize tempo e evite erros de configuração manual, permitindo que você e sua equipe foquem no desenvolvimento.

* **Histórico Limpo**: Ajuda a manter um histórico de commits legível e organizado, facilitando a depuração e a geração de `CHANGELOGs`.

## ⚙️ Pré-requisitos

Antes de usar este pacote, certifique-se de ter o seguinte instalado em seu sistema:

* [**Node.js**](https://nodejs.org/) (versão 16 ou superior)

* [**npm**](https://www.npmjs.com/) (gerenciador de pacotes do Node.js, geralmente vem com o Node.js)

* [**Git**](https://git-scm.com/) (sistema de controle de versão)

## 📦 Instalação e Uso

Para usar este pacote, siga os passos abaixo no terminal, na raiz do seu projeto (onde você tem seu `package.json` e seu repositório Git).

### Passo 1: Inicialize seu Projeto (se ainda não o fez)

Se você está começando um projeto novo, certifique-se de que ele tenha um repositório Git e um arquivo `package.json`:

```bash
# Navegue até a pasta do seu projeto
cd seu-projeto/

# Inicialize um repositório Git
git init

# Crie um arquivo package.json básico
npm init -y
```

### Passo 2: Execute o Automatizador

Você pode executar o pacote de duas maneiras:

#### Opção A: Usar via `npx` (recomendado para uso único)

Esta é a forma mais comum, pois não instala o pacote globalmente e sempre usa a versão mais recente:

```bash
npx setup-commitlint-husky-automator
```

#### Opção B: Instalar Globalmente (se for usar em muitos projetos)

Se você planeja usar esta ferramenta em muitos projetos diferentes e prefere instalá-la globalmente:

```bash
npm install -g setup-commitlint-husky-automator

# Depois de instalar globalmente, você pode executar em qualquer diretório de projeto:
setup-commitlint-husky
```

### O que acontece ao executar?

Ao executar `npx setup-commitlint-husky-automator` (ou `setup-commitlint-husky`), o script fará o seguinte:

1.  **Instalará dependências**: Adicionará `husky`, `@commitlint/cli` e `@commitlint/config-conventional` como `devDependencies` no seu `package.json` e os instalará.

2.  **Inicializará Husky**: Criará a pasta `.husky/` no seu projeto e configurará o Git para usar os hooks gerenciados pelo Husky.

3.  **Configurará o `commit-msg` Hook**: Criará (ou atualizará) o arquivo `.husky/commit-msg` para que o Commitlint valide sua mensagem de commit a cada `git commit`.

### Passo 3: Adicione a Configuração do Commitlint

Para que o Commitlint saiba quais regras aplicar, você precisa de um arquivo de configuração. Crie um arquivo chamado `commitlint.config.js` na raiz do seu projeto com o seguinte conteúdo:

```javascript
// commitlint.config.js
module.exports = {
  extends: ['@commitlint/config-conventional'],
};
```

Alternativamente, você pode adicionar a configuração diretamente no seu `package.json`:

```json
{
  "name": "seu-projeto",
  "version": "1.0.0",
  "description": "...",
  // ... outras configurações
  "commitlint": {
    "extends": [
      "@commitlint/config-conventional"
    ]
  },
  "devDependencies": {
    "@commitlint/cli": "^19.0.0",
    "@commitlint/config-conventional": "^19.0.0",
    "husky": "^9.0.0"
  }
}
```

### Passo 4: Teste a Configuração

Agora, tente fazer um commit para ver o Commitlint em ação!

1.  **Crie alguma alteração (exemplo: adicione ou modifique um arquivo):**

    ```bash
    echo "Olá Mundo!" > index.html
    git add .
    ```

2.  **Tente um commit que NÃO segue as convenções:**

    ```bash
    git commit -m "commit sem padrão"
    ```

    Você deve ver uma mensagem de erro do Commitlint no terminal, e o commit será **abortado**.

3.  **Tente um commit que SEGUE as convenções:**

    ```bash
    git commit -m "feat: adiciona página inicial com mensagem de saudação"
    ```

    Este commit deve ser aceito sem problemas, e sua mensagem de commit será validada.

## ⚠️ Observações e Solução de Problemas

* **Permissões de Execução**: Se encontrar erros de permissão (`Permission denied`), certifique-se de que os scripts do Husky na pasta `.husky/` são executáveis. O automatizador já tenta fazer isso com `chmod +x`, mas em alguns ambientes pode ser necessário verificar.

* **Versões do Node.js/npm**: Certifique-se de que suas versões de Node.js e npm são compatíveis com as dependências.

* **Problemas de Internet**: A instalação de pacotes requer uma conexão ativa com a internet.

* **Mensagens de Erro do Commitlint**: O Commitlint fornecerá feedback detalhado sobre o que está errado com sua mensagem de commit. Preste atenção a essas mensagens para corrigir o formato.

## 📄 Licença

Este projeto está licenciado sob a Licença MIT. Consulte o arquivo [LICENSE](LICENSE) para mais detalhes.

## 👤 Autor

Jeiel Miranda