Migrando do npm

Migrar do npm é um processo bem fácil para a maioria dos usuários. O Yarn pode usar o mesmo formato de package.json que o npm, e pode instalar qualquer projeto do registro npm.

Se você quiser experimentar o Yarn em um projeto existente, basta executar:

yarn

Isso irá criar sua pasta node_modules usando o algoritmo de resolução do Yarn, que é compatível com o algoritmo de resolução do Node.js.

Se você receber um erro, verifique no rastreador de problemas do Yarn se já foi relatado um problema como esse ou informe-o você mesmo.

Quando você executar yarn ou yarn add <pacote>, o Yarn vai gerar um arquivo yarn.lock na pasta raiz do seu pacote. Você não precisa ler ou compreender este arquivo - basta adicionar ele no seu sistema de controle de versão. Quando outras pessoas começarem a usar o Yarn em vez do npm, o arquivo yarn.lock irá garantir que elas recebam precisamente as mesmas dependências que você tem.

Na maioria dos casos, apenas executar yarn ou yarn add pela primeira vez já é o bastante para tudo funcionar. Porém, em alguns casos, as informações existentes em um arquivo package.json não são explícitas o suficiente para eliminar dependências, e a forma determinística com a qual o Yarn escolhe as dependências poderá causar conflitos de dependências. Casos assim são mais prováveis de acontecer em projetos maiores, onde às vezes o npm install não funciona e, por causa disso, os desenvolvedores frequentemente acabam tendo que remover módulos direto da pasta node_modules e reconstruindo do zero. Se isso acontecer, tente usar o npm para deixar as versões das dependências mais explícitas antes de converter para o Yarn.

Outros desenvolvedores em um projeto podem continuar usando o npm à vontade. Assim, você não precisa obrigar todo mundo no projeto a migrar para o Yarn de uma só vez. Os desenvolvedores que usam o yarn compartilharão entre eles exatamente as mesmas configurações de projeto, enquanto que os desenvolvedores que usam o npm poderão receber configurações ligeiramente diferentes, que é o comportamento esperado do npm.

Mais tarde, se você decidir desistir de usar o Yarn, basta você voltar a usar o npm sem fazer nenhuma alteração específica. Se ninguém mais no projeto usar o Yarn e ele não for mais necessário, você pode excluir seu arquivo yarn.lock sem problemas.

Se você estiver usando um arquivo npm-shrinkwrap.json no momento, esteja ciente que você pode terminar com um conjunto diferente de dependências. O Yarn não dá suporte a arquivos npm shrinkwrap já que eles não têm informações suficientes para que o algoritmo mais determinístico do Yarn funcione adequadamente. Se você estiver usando um arquivo shrinkwrap, pode ser mais fácil converter de uma só vez todos os que trabalham no projeto a usar o Yarn. Basta remover o arquivo npm-shrinkwrap.json existente e adicionar o yarn.lock recém-criado no controle de versão.

Comparação de comandos CLI

npm (v5) Yarn
npm install yarn install
(N/A) yarn install --flat
(N/A) yarn install --har
npm install --no-package-lock yarn install --no-lockfile
(N/A) yarn install --pure-lockfile
npm install [pacote] yarn add [pacote]
npm install [pacote] --save-dev yarn add [pacote] --dev
(N/A) yarn add [pacote] --peer
npm install [pacote] --save-optional yarn add [pacote] --optional
npm install [pacote] --save-exact yarn add [pacote] --exact
(N/A) yarn add [pacote] --tilde
npm install [pacote] --global yarn global add [pacote]
npm update --global                   yarn global upgrade                    
npm rebuild yarn install --force
npm uninstall [pacote] yarn remove [pacote]
npm cache clean yarn cache clean [pacote]
rm -rf node_modules && npm install yarn upgrade