Vejo que essas são duas perguntas separadas em uma. Deixe-me responder as duas.
Você deve confirmar o arquivo no repositório?
Sim. Conforme mencionado na resposta do ckuijjer , é recomendável no Guia de migração incluir esse arquivo no repositório. Leia para entender por que você precisa fazer isso.
O que é yarn.lock
?
É um arquivo que armazena as versões exatas de dependência para o seu projeto, juntamente com somas de verificação para cada pacote. Esta é a maneira do fio de fornecer consistência para suas dependências.
Para entender por que esse arquivo é necessário, primeiro você precisa entender qual era o problema por trás dos NPMs originais package.json
. Quando você instala o pacote, o NPM armazena o intervalo de revisões permitidas de uma dependência em vez de uma revisão específica (semver). O NPM tentará buscar a atualização da dependência da versão mais recente da dependência dentro do intervalo especificado (ou seja, atualizações de patch sem interrupção). Há dois problemas com esta abordagem.
Os autores de dependência podem lançar atualizações de versão de patch, enquanto na verdade introduzem uma alteração que afetará seu projeto.
Dois desenvolvedores executando npm install
em momentos diferentes podem obter o conjunto diferente de dependências. O que pode fazer com que um bug não seja reproduzível em dois ambientes exatamente iguais. Isso pode causar problemas de estabilidade de compilação para servidores de CI, por exemplo.
O fio, por outro lado, segue o caminho da máxima previsibilidade. Ele cria um yarn.lock
arquivo para salvar as versões exatas da dependência. Tendo esse arquivo no lugar, o fio usará as versões armazenadas em yarn.lock
vez de resolver as versões package.json
. Essa estratégia garante que nenhum dos problemas descritos acima aconteça.
yarn.lock
é semelhante ao npm-shrinkwrap.json
que pode ser criado por npm shrinkwrap
comando. Verifique esta resposta explicando as diferenças entre esses dois arquivos.