✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Como usar os ganchos do Git para detectar alterações em um arquivo de bloqueio e mostrar uma mensagem

8

Quando estamos trabalhando em uma equipe colaborativa, de tempos em tempos um desenvolvedor precisa adicionar um novo pacote a um branch que é então mesclado ao master. Alguém pode não saber disso e apenas puxar o master e executar o aplicativo apenas para que ele falhe devido ao pacote ausente. Vamos ver como podemos usar os ganchos do Git para detectar alterações em a package.jsonou a yarn.locke exibir uma mensagem solicitando que o usuário instale as dependências ausentes.

O que são ganchos do Git?

Os ganchos do Git são acionados quando ocorre algum evento do Git, como um novo commit, push de commits para um branch online, pull commits, check-out de um branch ou merge de um branch. Esses processos terminam com 0 quando terminam corretamente ou algum outro valor quando terminam incorretamente.

Se o processo hooked terminar com 0, a ação do Git continua. Caso contrário, a ação do Git é bloqueada. Por exemplo, se você configurar um gancho Git pré-commit para fazer o lint do seu código, o Git executará isso quando você fizer um arquivo git commit. Se o lint falhar, o commit não será concluído.

Os hooks do Git são algo integrado ao Git e a lista de hooks é bem extensa. Por exemplo, você tem pre-push, post-commit, post-checkout, post-merge e muitos outros ganchos do Git.

Execute os ganchos do Git com o Husky

Para executar algumas tarefas quando os hooks do Git são acionados, podemos usar o pacote Husky para Node.js. O Husky nos permite especificar em um package.jsonarquivo quais scripts devem ser executados quando um gancho do Git é acionado. Instale o pacote Husky com NPM:

npm i -D husky

ou Fio:

yarn add -D husky

Agora você precisa inicializar os ganchos do Husky para Git. Se você usa NPM:

npx husky install

e se você usar o fio

yarn husky install

e pronto, agora você instalou e configurou o Husky para executar hooks do Git. Finalmente é hora de definir um gancho!

Adicione um gancho Git post merge para verificar as alterações do arquivo de bloqueio

Queremos executar algum código para nos alertar se os arquivos package-lock.jsonou yarn.lockforam alterados. Isso geralmente acontece quando puxamos mastere esses arquivos foram alterados. Podemos configurar um gancho para ser executado quando mesclarmos uma ramificação.

Para especificar nossos ganchos do Git para o Husky, nós os definimos no package.jsonarquivo. Adicione isto como uma chave de nível superior:

"husky": { "hooks": { "post-merge": "./githooks/post-merge-hook.sh" } }

O que isso diz é que depois que uma ramificação for mesclada, executaremos esse script. Agora temos que criá-lo. Crie uma pasta, adicione um arquivo a ela e configure-a para ser executável:

mkdir githooks && cd githooks && touch post-merge-hook.sh && chmod +x post-merge-hook.sh

Se você não configurá-lo para ser executável, você encontrará um erro "Permissão negada" quando o Husky tentar executar este gancho do Git. Agora edite o arquivo com o Vim ou seu editor favorito e cole isso nele:

changedFiles="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)" runOnChange() { echo "$changedFiles" | grep -q "$1" && echo -e "$2" } runOnChange package-lock.json "033[35m*******************************************************************************n* 033[33mpackage-lock.json033[35m has changed. Run033[33m npm install033[35m to update your dependencies. *n*******************************************************************************" exit 0

Isso imprimirá uma mensagem em roxo com as palavras package-lock.jsone npm installem laranja. Este script verifica se package-lock.jsonfoi atualizado e, se você quiser testar yarn.lock, basta substituir o nome do arquivo.

Testar a verificação de alteração do arquivo de bloqueio

Testar isso não é muito complexo. Basicamente, você só precisa criar uma nova ramificação, instalar algum pacote para que package-lock.jsonseja modificado, confirmá-lo e mudar para a ramificação anterior. Tudo o que pode ser feito com este comando:

git checkout -b testbranch && npm i -D lint-staged && git add. && git commit -m "test" && git checkout -

Agora você precisa mesclá-lo neste branch

git merge testbranch

Isso acionará o gancho post-merge e executará nosso script. Você verá esta mensagem na linha de comando porque package-lock.jsonfoi modificado durante a mesclagem:

Detectando uma alteração no arquivo de bloqueio no VS Code

Este foi apenas um uso. Os ganchos do Git podem ser usados ​​de várias maneiras, por exemplo, para executar o pacote popular Prettier antes de você confirmar algo para formatar seu código.

Existem alternativas para este caso específico, de verificar se package-lock.jsonfoi atualizado. Por exemplo, para o VS Code, há um pacote bacana Atualizar pacotes NPM que solicitará que você atualize seus pacotes se detectar uma modificação. Ele será executado independentemente de você ter configurado hooks do Git ou não. Outra coisa legal é que funcionará quando você trocar de branches, mesmo sem mesclar um deles no outro.

Como usar os ganchos do Git para detectar alterações em um arquivo de bloqueio e mostrar uma mensagem

No entanto, a vantagem do que implementamos aqui é que ele será executado na linha de comando e não depende de um editor de código específico. Se você estiver trabalhando, por exemplo, em um projeto de código aberto, convém configurar o que está descrito aqui para que haja um terreno comum para todos os desenvolvedores envolvidos, independentemente de sua configuração.

Fonte de gravação: startfunction.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação