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 ou bibliotecas também devem adicionar o arquivo yarn.lock
no 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.