Fio 2 - com Prolog e plug-ins

O Yarn - o gerenciador de pacotes do nó - lançou a segunda versão . E, ao que parece, os caras decidiram mudar seriamente o status quo no ecossistema de nós, ou mesmo os gerenciadores de pacotes em geral. Exclua todas as fotos sobre a gigabyte Nurse node_modules, remova yarn installdos scripts CI, iniciamos outra grande confusão de JavaScript. Em resumo:

  • O modo Plug'n'Play tornou-se padrão e node_modules tornou-se secundário, através do plugin.
  • Criamos um plug-in e um fluxo de trabalho para o monorep - talvez o lerna não seja necessário.
  • Eles foram construídos em seu mini shell para que os scripts do pacote possam ser executados sem esses envios cruzados no Windows.
  • Adicionado um prólogo para verificar as regras entre os espaços de trabalho.
  • Npx novamente lavou a sua.
Se você não deseja atualizar todos os seus projetos, basta executar yarn policies set-version ^1(consulte legacy.yarnpkg.com/en/docs/cli/policies ) nos repositórios que devem permanecer no Yarn 1 e confirmar o resultado. O Yarn usará os binários locais do Yarn 1 em vez dos binários globais, para que todos na equipe usem a mesma versão!


Em geral, duas direções de desenvolvimento podem ser traçadas: a) reprodutibilidade máxima do ambiente eb) movimento em direção a uma plataforma para gerenciamento de pacotes.

Em relação ao primeiro ponto, o fio sempre dirigia - na verdade, essa foi a razão pela qual ele apareceu, pressionando imediatamente o npm (lembro-me, executar a instalação do npm poderia dar resultados diferentes, porque o arquivo de bloqueio no mundo do nó é o mérito do fio) . Embora eu tenha mudado pessoalmente por causa da linha furiosa nos registros da NPM .

Mas agora eles decidiram, por assim dizer, ir ao limite. Quando você adiciona um pacote, ele (e todas as suas dependências), na forma de um arquivo zip, é adicionado ao cache, na pasta .yarn na pasta do pacote (como .git). Em vez de node_modules, um arquivo .pnp.js é criado, que processa as importações do módulo. Há duas consequências importantes:

  1. Você pode adicionar esse cache diretamente ao git - e, após o checkout, você terá imediatamente a versão atual do aplicativo com todas as dependências.
  2. O link de fios funciona muito melhor - agora as dependências dos pares também são processadas corretamente

Quanto à plataforma, os caras mudaram para a arquitetura do plug-in (ou seja, o yarn principalmente como uma API e, posteriormente, como a CLI) e até declararam que desejam se livrar do próprio nó, tornando o yarn uma solução genérica para criar seus próprios gerenciadores de pacotes .

Parece interessante, ambicioso e um pouco arrogante. Vamos ver se eles conseguem lidar ou parar já no primeiro estágio do PnP.

De qualquer forma, tentarei transferir nosso projeto para o fio 2, se funcionar - será bom. Como você está?

UPD: Sobre o prólogo no título não é uma piada, será possível escrever as regras para verificar os espaços de trabalho nele, next.yarnpkg.com/features/constraints

Próximo - um extrato do anúncio oficial .

O mais importante


Saída no console reprojetada para melhor legibilidade
Comandos da CLI ( yarn add...) Agora considere vorkspeysy
Você pode se livrar de yarn installseu repositório
de npx alternativo menos perigoso:, yarn dlxpara executar um
comando de execução único em todos os vorkspeysah com yarn workspaces foreach
pacotes Mankipatching através do log de patch:
Links para pacotes locais por meio do protocolo do portal:
Um novo fluxo de trabalho para liberar áreas de trabalho normalmente
Verificação declarativa e correções na área de trabalho (PROLOG INCLUÍDO)

E também ...


Os pacotes são construídos apenas se, sem isso, absolutamente nada.
As compilações de pacotes podem ser ativadas / desativadas. Os
scripts são executados no shell universal As
dependências de pares funcionam mesmo através de um link de fio O
arquivo de bloqueio se tornou normal YAML
Todo o código está agora no suporte ao
plug-in TypeScript

Quebrando mudanças


As configurações tornaram-se uniformes.Os
pacotes devem obedecer aos seus
limites.As dependências do pacote não são mais suportadas.Os
pacotes são armazenados em arquivos somente leitura.O

registro de alterações detalhado está aqui , as instruções de atualização estão aqui .

Será difícil mudar para o Fio 2?


Graças aos nossos testadores beta e ao suporte geral ao ecossistema, diminuímos bastante a dor associada a uma atualização tão grande. O guia de realocação informará mais detalhadamente, mas, em geral, enquanto você usa as versões mais recentes das ferramentas (ESLint, Babel, TypeScript, Gatsby etc.), tudo deve estar normal.

Mas há uma possibilidade significativa: Flow e React-Native não podem ser usados ​​com o Plug'n'Play (PnP) no momento . Estamos procurando maneiras de trabalhar com suas equipes para fazê-lo funcionar. No momento, você pode permanecer no Yarn 1 ou usar o plug-in node_modules , que fornece compatibilidade com versões anteriores para facilitar a transição (ainda está em operação, pode haver erros). Mais aqui .

O que acontecerá com a versão antiga?


O fio 1,22 será lançado na próxima semana. Depois disso, o ramo 1.x entrará oficialmente no modo ao vivo - ou seja, não haverá outras liberações além das correções de vulnerabilidade. Novos recursos serão criados exclusivamente no Fio 2. Na prática, isso significa:

  • O repositório antigo (yarnpkg / yarn) deixará o yarnpkg / legacy refletir seu status de sobrevivência. Ele ficará aberto por algum tempo, mas provavelmente o arquivaremos em um ano ou dois.
  • O novo repositório não será renomeado para yarnpkg / yarn, pois isso quebrará muitos links antigos. No futuro próximo, ele permanecerá no yarnpkg / berry .
  • O site antigo irá para legacy.yarnpkg.com, o novo site (agora next.yarnpkg.com) será movido para o domínio principal yarnpkg.com
  • O pacote de fios no npm será atualizado assim:

    • A tag berry sempre será exibida na versão 2.x mais recente
    • legacy 1.x
    • latest legacy , berry. , Yarn 2.
  • - Node Yarn 2 Node 14, 2020 . yarnPath Yarn 2 .
  • Estamos mudando para as ações do GitHub totalmente automáticas e alguns repositórios de lotes (em particular Homebrew, Chocolatey etc.) ainda não estão danificados. Como resultado, eles receberão uma atualização do Yarn 2 depois do resto. Recomendamos o uso de versão do conjunto de fios (ou políticas de versão do conjunto de fios no Yarn 1).

Esperamos que a maioria dessas mudanças seja concluída até 1º de fevereiro de 2020.

Source: https://habr.com/ru/post/undefined/


All Articles