DEV Community

Cover image for Drops #01: Corrigindo vulnerabilidades em dependências com Yarn! (ou quase)
William Queiroz
William Queiroz

Posted on • Updated on

Drops #01: Corrigindo vulnerabilidades em dependências com Yarn! (ou quase)

Photo by Alexander Sinn on Unsplash

Disclaimer

E ae dev, tudo bem com você?

Esse post foi originado lá no meu Medium, estou migrando-o para cá, pois adotarei o dev.to por diversas vantagens em relação ao Medium (o suporte ao Markdown me venceu heauehau).

Bora pro post?

Ah! mas antes disso... Esse post faz parte de uma série de artigos "drops" que tenho aqui! Veja a lista:


Fala pessoal!! Quanto tempo!

Alguns dias atrás, acessei o repositório de um exemplo que usei no post: Entendendo a Context API do React: criando um componente de loading e me deparei com isso:

Alt Text

Eu precisava então atualizar as dependências desse projeto lá no meu Github. E como tenho utilizado o Yarn como gerenciador de pacotes principal, quis fazer o processo de correção com ele.

Até aí, BELEZA.

PLOT TWIST!

Entretanto, notei que o Yarn até possui um script para executar a auditoria das dependências do projeto, porém, não inclui a atualização automática e transparente delas (assim como o NPM faz com o npm audit fix).

Se você executar no seu terminal o script yarn audit --help, verá que de fato não existe um script que corrija automaticamente as dependências com vulnerabilidades…

Você pode ler mais sobre o comando audit do Yarn em: https://classic.yarnpkg.com/en/docs/cli/audit

Existem algumas issues no repositório do Yarn, solicitando o recurso e etc. Não vou entrar tanto em detalhes, mas você pode dar uma olhada começando por aqui: https://github.com/yarnpkg/yarn/issues/5808


Troubleshoot

A ideia aqui é aproveitar o script do NPM, e ainda assim continuar utilizando o Yarn como o gerenciador principal dos seus pacotes.

Inicialmente, vamos obter apenas package-lock.json que o NPM gera ao instalar as dependências (mais à frente explicarei o porque disso):

npm i--package-lock-only
Enter fullscreen mode Exit fullscreen mode

Então utilizaremos o script npm audit fix. Ele utilizará o package-lock.json gerado:

npm audit fix
Enter fullscreen mode Exit fullscreen mode

O comando atualizará a dependências passíveis de atualização.

E o que eu quero dizer com isso? O comando é capaz de identificar possíveis breaking changes que impactam diretamente o seu projeto. Você talvez veja na saída do terminal algo como:

"x" vulnerabilities required manual review and could not be updated

Você pode usar a flag -- force, porém, o NPM irá avisá-lo: I sure hope you know what you are doing HAHA

Veja mais sobre em: https://docs.npmjs.com/cli/audit

Ainda não terminamos! Até então, temos o arquivo package-lock.json criado e, possivelmente, o package.json modificado no projeto. O lock de dependências de um projeto que utiliza o Yarn como gerenciador, é o arquivo yarn.lock.

O que faremos aqui, é gerar esse arquivo a partir do nosso package-lock.json.

PLOT TWIST!

Antes de executar o comando a seguir, remova o arquivo yarn.lock para não termos algum problema na criação do novo arquivo com o yarn import:

rm yarn.lock && yarn import
Enter fullscreen mode Exit fullscreen mode

Veja mais sobre em: https://classic.yarnpkg.com/en/docs/cli/import/

E Voilà!

Temos o yarn.lock fresquinho, com as correções feitas pelo NPM, e prontinho para ser versionado!

Ah! Não esqueça de remover o package-lock.json gerado lá no início.

Finalizando…

Bem, é isso, por hoje, é só!

Quero agradecer a você que chegou até aqui, e queria lhe pedir também para encaminhar-me as suas dúvidas, comentários, críticas, correções ou sugestões sobre a postagem.

Deixe seu ❤️ se gostou e me siga para mais conteúdos.

Até!

Top comments (0)