yarn.lock

A fim de obter uma instalação consistente através de todas as máquinas, o Yarn precisa de mais informações do que as dependências que você configura no seu package.json. Yarn precisa armazenar a versão exata de cada uma das dependências instaladas.

Para fazer isso, Yarn usa o arquivo yarn.lock na raiz do deu projeto. Esses “lockfiles” parecem com isso:

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
package-1@^1.0.0:
  version "1.0.3"
  resolved "https://registry.npmjs.org/package-1/-/package-1-1.0.3.tgz#a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"
package-2@^2.0.0:
  version "2.0.1"
  resolved "https://registry.npmjs.org/package-2/-/package-2-2.0.1.tgz#a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"
  dependencies:
    package-4 "^4.0.0"
package-3@^3.0.0:
  version "3.1.9"
  resolved "https://registry.npmjs.org/package-3/-/package-3-3.1.9.tgz#a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"
  dependencies:
    package-4 "^4.5.0"
package-4@^4.0.0, package-4@^4.5.0:
  version "4.6.3"
  resolved "https://registry.npmjs.org/package-4/-/package-4-2.6.3.tgz#a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"

Isso é comparável a lockfiles de outros gerenciadores de pacotes como Bundler ou Cargo. Semelhante ao npm-shrinkwrap.json do npm, no entanto, não é tão solto e cria resultados reprodutíveis.

Gerenciado por Yarn

Seu arquivo yarn.lock é gerado automaticamente e deve ser tratado inteiramente pelo Yarn. Quando você adicionar/atualizar/remover dependências com a CLI do Yarn, ele irá automaticamente atualizar seu arquivo yarn.lock. Não edite este arquivo diretamente, pois é fácil quebrar algo.

Somente o pacote atual

Durante a instalação, o Yarn só irá usar o arquivo yarn.lock do nível mais alto e irá ignorar qualquer arquivo yarn.lock que exista dentro das dependências. O arquivo de nível superior yarn.lock inclui tudo que o Yarn precisa para trancar as versões de todos os pacotes na árvore de dependência inteira.

Check-in no controle de código fonte

Todos os arquivos yarn.lock devem ser adicionados ao seu sistema de controle de código fonte (ex. git ou mercurial). Isso permite que o Yarn instale a mesma árvore de dependência em todas as máquinas, seja o laptop do seu colega de trabalho ou um servidor de CI.

Autores de frameworks e bibliotecas deveriam também adicionar yarn.lock no sistema de controle de código fonte. Não se preocupe com a publicação do arquivo yarn.lock, já que ele não terá nenhum efeito para os usuários da biblioteca.

Veja https://yarnpkg.com/blog/2016/11/24/lockfiles-for-all/.