Fil 2 - avec Prolog et plug-ins

Yarn - le gestionnaire de packages pour le nœud - a publié la deuxième version . Et, il semble, les gars ont sérieusement décidé de changer le statu quo dans l'écosystème des nœuds, ou même les gestionnaires de packages en général. Supprimez toutes les images sur gigaoctet Nurse node_modules, supprimez yarn installdes scripts CI, nous commençons une autre grande confusion JavaScript. En bref:

  • Le mode Plug'n'Play est devenu par défaut, et node_modules est devenu secondaire, via le plugin.
  • Nous avons créé un plugin et un workflow pour monorep - peut-être que lerna ne sera pas nécessaire.
  • Ils ont construit leur mini-shell pour que les scripts du package puissent être exécutés sans ceux de vos cross-envs dans Windows.
  • Ajout d'un prologue pour vérifier les règles entre les espaces de travail.
  • npx a de nouveau lavé leur.
Si vous ne souhaitez pas mettre à jour tous vos projets, exécutez simplement yarn policies set-version ^1(voir legacy.yarnpkg.com/en/docs/cli/policies ) dans les référentiels qui doivent rester sur Yarn 1 et validez le résultat. Ensuite, Yarn utilisera les binaires locaux de Yarn 1 au lieu des binaires globaux, donc tout le monde dans l'équipe utilisera la même version!


En général, deux directions de développement peuvent être tracées: a) reproductibilité maximale de l'environnement et b) évolution vers une plateforme de gestion des packages.

En ce qui concerne le premier point, le fil a toujours conduit - en fait, c'est la raison pour laquelle il est apparu une fois, en poussant immédiatement npm (je me souviens, puis exécuter npm install pourrait donner des résultats différents, car le fichier de verrouillage dans le monde des nœuds est le mérite du fil) . Bien que j'y ai personnellement basculé à cause de la ligne furieuse dans les journaux npm .

Mais maintenant, ils ont décidé, pour ainsi dire, de repousser les limites. Lorsque vous ajoutez un package, celui-ci (et toutes ses dépendances), sous la forme d'une archive zip, est ajouté au cache, dans le dossier .yarn du dossier du package (comme .git). Au lieu de node_modules, un fichier .pnp.js est créé, qui traite les importations de modules. Il y a deux conséquences importantes:

  1. Vous pouvez ajouter ce cache directement à git - puis après le paiement, vous aurez immédiatement la version actuelle de l'application avec toutes les dépendances.
  2. Le lien de fil fonctionne beaucoup mieux - maintenant les dépendances entre pairs sont également traitées correctement

En ce qui concerne la plate-forme, les gars sont passés à l'architecture de plug-in (c'est-à-dire, principalement en tant qu'API, puis plus tard en tant que CLI) et ont même annoncé qu'ils voulaient se débarrasser du nœud lui-même, faisant de Yarn une solution générique pour créer vos propres gestionnaires de packages .

Cela semble intéressant, ambitieux et légèrement arrogant. Voyons s'ils peuvent faire face ou caler déjà au premier étage PnP.

Dans tous les cas, je vais essayer de transférer notre projet sur le fil 2, si ça marche - ce sera sympa. Comment ça va?

UPD: À propos du prologue dans le titre n'est pas une blague, il sera possible d'écrire les règles de vérification des espaces de travail dessus, next.yarnpkg.com/features/constraints

Next - un extrait de l' annonce officielle .

Le plus important


Sortie dans la console repensée pour une meilleure lisibilité
Commandes CLI ( yarn add...) Maintenant, considérez vorkspeysy
Vous pouvez vous débarrasser yarn installdans son référentiel
d'alternatives npx moins dangereuses yarn dlx, pour exécuter une commande unique
Exécuter des choses sur tous les vorkspeysah avec des yarn workspaces foreach
paquets Mankipatching via le journal des correctifs:
liens vers les packages locaux via le protocole du portail:
un nouveau flux de travail pour libérer normalement les espaces de travail
Vérification déclarative et correctifs de l'espace de travail (PROLOG INCLUDED)

Et aussi ...


Les packages sont construits uniquement si absolument rien ne
peut être fait sans builds de packages. Les
scripts exécutés dans le shell universel
Les dépendances de pairs fonctionnent même via le lien de fil.
Lockfile est devenu YAML normal.
Tout le code est maintenant sur TypeScript.
Prise en charge des plug-ins

Changements de rupture


Les paramètres sont devenus uniformes.
Les packages doivent respecter leurs limites. Les
dépendances des bundles ne sont plus prises en charge.
Les packages sont stockés dans des archives en lecture seule. Le

journal des modifications détaillé est ici , les instructions de mise à jour sont ici .

Sera-t-il difficile de passer au fil 2?


Grâce à nos bêta-testeurs et à la prise en charge globale de l'écosystème, nous avons allégé la douleur associée à une mise à niveau aussi massive. Le guide de relocalisation vous le dira plus en détail, mais en général, lorsque vous utilisez les dernières versions d'outils (ESLint, Babel, TypeScript, Gatsby, etc.), tout devrait être normal.

Mais il y a un problème important: Flow et React-Native ne peuvent pas être utilisés avec Plug'n'Play (PnP) pour le moment . Nous recherchons des moyens de travailler avec leurs équipes pour le faire fonctionner. Pour le moment, vous pouvez rester sur le fil 1 ou utiliser le plugin node_modules , qui offre une compatibilité descendante pour faciliter la transition (il est toujours en fonctionnement, il peut y avoir des bugs). Plus ici .

Qu'adviendra-t-il de l'ancienne version?


Yarn 1.22 sortira la semaine prochaine. Après cela, la branche 1.x entrera officiellement en mode direct - c'est-à-dire qu'il n'y aura pas de versions autres que des correctifs de vulnérabilité. De nouvelles fonctionnalités seront réalisées exclusivement dans Yarn 2. En pratique, cela signifie:

  • L'ancien référentiel (yarnpkg / yarn) partira pour yarnpkg / legacy afin de refléter son statut de survivant. Il sera ouvert pendant un certain temps, mais très probablement nous l'archiverons dans un an ou deux.
  • Le nouveau référentiel ne sera pas renommé en yarnpkg / yarn, car cela rompra de nombreux anciens liens. Dans un avenir prévisible, il restera à yarnpkg / berry .
  • L'ancien site ira à legacy.yarnpkg.com, le nouveau site (maintenant next.yarnpkg.com) passera au domaine principal yarnpkg.com
  • Le paquet de fils sur npm sera mis à jour comme ceci:

    • La balise berry s'affichera toujours sur la dernière version 2.x
    • legacy 1.x
    • latest legacy , berry. , Yarn 2.
  • - Node Yarn 2 Node 14, 2020 . yarnPath Yarn 2 .
  • Nous passons à des actions GitHub entièrement automatiques et certains référentiels batch (en particulier Homebrew, Chocolatey, etc.) ne sont pas encore vissés. En conséquence, ils recevront une mise à jour de Yarn 2 plus tard que les autres. Nous vous recommandons d'utiliser la version de jeu de fils (ou la version de jeu de politiques de fils sur le fil 1).

Nous prévoyons que la plupart de ces changements seront terminés d'ici le 1er février 2020.

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


All Articles