Yarn 2 - dengan Prolog dan plug-in

Yarn - manajer paket untuk node - merilis versi kedua . Dan, tampaknya, orang-orang serius untuk mengubah status quo di ekosistem node, atau bahkan manajer paket pada umumnya. Hapus semua gambar tentang gigabyte Perawat node_modules, hapus yarn installdari skrip CI, kita mulai JavaScript-kebingungan besar lainnya. Pendeknya:

  • Mode Plug'n'Play menjadi default, dan node_modules menjadi sekunder, melalui plugin.
  • Kami membuat plugin dan alur kerja untuk monorep - mungkin lerna tidak diperlukan.
  • Mereka membuat mini-shell mereka sehingga skrip paket dapat dijalankan tanpa cross-env Anda di Windows.
  • Menambahkan prolog untuk memeriksa aturan antar ruang kerja.
  • npx lagi dicuci.
Jika Anda tidak ingin memperbarui semua proyek Anda, jalankan saja yarn policies set-version ^1(lihat legacy.yarnpkg.com/en/docs/cli/policies ) di repositori yang harus tetap di Benang 1 dan komit hasilnya. Kemudian Yarn akan menggunakan binari Yarn 1 lokal alih-alih yang global, jadi semua orang di tim akan menggunakan versi yang sama!


Secara umum, dua arah pengembangan dapat dilacak: a) reproduktifitas maksimum lingkungan dan b) gerakan menuju platform untuk manajemen paket.

Mengenai poin pertama, benang selalu melaju - pada kenyataannya, ini adalah alasan mengapa ia pernah muncul, segera mendorong npm (saya ingat, kemudian menjalankan instalasi npm dapat memberikan hasil yang berbeda, karena file kunci di dunia simpul adalah manfaat benang) . Meskipun saya pribadi beralih ke itu karena garis marah di log npm .

Tetapi sekarang mereka memutuskan, untuk berbicara, untuk mendorong ke batas. Ketika Anda menambahkan paket, itu (dan semua dependensinya), dalam bentuk arsip zip, ditambahkan ke cache, di folder .yarn di folder paket (seperti .git). Alih-alih node_modules, file .pnp.js dibuat, yang memproses impor modul. Ada dua konsekuensi penting:

  1. Anda dapat menambahkan cache ini langsung ke git - dan kemudian setelah checkout Anda akan segera memiliki versi aplikasi saat ini dengan semua dependensi.
  2. Tautan benang berfungsi lebih baik - sekarang dependensi rekan juga diproses dengan benar

Adapun platform, orang-orang beralih ke arsitektur plugin (yaitu, benang terutama sebagai API, dan kemudian sebagai CLI) dan bahkan mengumumkan bahwa mereka ingin menyingkirkan simpul itu sendiri, menjadikan benang solusi umum untuk membangun manajer paket Anda sendiri .

Kedengarannya menarik, ambisius, dan sedikit sombong. Mari kita lihat apakah mereka dapat mengatasi atau mengulur waktu pada tahap PnP-pertama.

Bagaimanapun, saya akan mencoba untuk mentransfer proyek kami ke benang 2, jika berhasil - itu akan menyenangkan. Apa kabar?

UPD: Tentang prolog dalam judul bukan lelucon, akan mungkin untuk menulis aturan untuk memeriksa ruang kerja di atasnya, next.yarnpkg.com/features/constraints

Next - kutipan dari pengumuman resmi .

Yang paling penting


Output di konsol didesain ulang untuk keterbacaan yang lebih baik
Perintah CLI ( yarn add...) Sekarang pertimbangkan vorkspeysy
Anda dapat membuang yarn installdalam repositori
alternatif yang tidak berbahaya npx:, yarn dlxuntuk menjalankan satu kali hal.
Menjalankan perintah pada semua vorkspeysah dengan yarn workspaces foreach
paket Mankipatching melalui patch log:
Tautan ke paket lokal: melalui protokol portal:
Alur kerja baru untuk melepaskan ruang kerja yang normal
Pemeriksaan deklaratif dan perbaikan ruang kerja (PROLOG TERMASUK)

Dan juga ...


Paket dibangun hanya jika tanpa ini, sama sekali tidak ada sama sekali
Paket build dapat dinyalakan / dimatikan
Script dieksekusi dalam shell universal
Ketergantungan rekan kerja bahkan melalui tautan benang
File kunci telah menjadi normal YAML
Semua kode sekarang ada pada dukungan
Plug-in TypeScript

Memecah perubahan


Pengaturan telah menjadi seragam.
Paket harus memenuhi batasannya.
Ketergantungan bundel tidak lagi didukung.
Paket disimpan dalam arsip read-only. Daftar

perubahan lengkap ada di sini , petunjuk pembaruan ada di sini .

Apakah akan sulit untuk pindah ke Benang 2?


Berkat penguji beta kami dan dukungan ekosistem secara keseluruhan, kami telah meredakan banyak rasa sakit yang terkait dengan peningkatan besar-besaran. Panduan relokasi akan memberi tahu lebih detail, tetapi secara umum, saat Anda menggunakan versi terbaru dari alat (ESLint, Babel, TypeScript, Gatsby, dll.), Semuanya harus normal.

Tetapi ada satu cant signifikan: Flow dan React-Native tidak dapat digunakan dengan Plug'n'Play (PnP) sekarang . Kami mencari cara untuk bekerja dengan tim mereka untuk membuatnya bekerja. Saat ini, Anda dapat tetap menggunakan Benang 1 atau menggunakan plugin node_modules , yang menyediakan kompatibilitas mundur untuk memfasilitasi transisi (masih beroperasi, mungkin ada bug). Lebih lanjut di sini .

Apa yang akan terjadi pada versi lama?


Benang 1.22 akan dirilis minggu depan. Setelah ini, cabang 1.x secara resmi akan masuk ke mode live - yaitu, tidak akan ada rilis selain perbaikan kerentanan. Fitur baru akan dibuat secara eksklusif di Benang 2. Dalam praktiknya, ini berarti:

  • Repositori lama (yarnpkg / yarn) akan berangkat ke yarnpkg / legacy untuk mencerminkan statusnya yang bertahan. Ini akan terbuka untuk beberapa waktu, tetapi kemungkinan besar kami akan mengarsipkannya dalam satu atau dua tahun.
  • Repositori baru tidak akan diubah namanya menjadi yarnpkg / yarn, karena ini akan memutus banyak tautan lama. Untuk masa mendatang, ia akan tetap di yarnpkg / berry .
  • Situs lama akan menuju ke legacy.yarnpkg.com, situs baru (sekarang next.yarnpkg.com) akan pindah ke domain utama yarnpkg.com
  • Paket benang pada npm akan diperbarui seperti ini:

    • Tag berry akan selalu ditampilkan pada rilis 2.x terbaru
    • legacy 1.x
    • latest legacy , berry. , Yarn 2.
  • - Node Yarn 2 Node 14, 2020 . yarnPath Yarn 2 .
  • Kami beralih ke Tindakan GitHub sepenuhnya otomatis dan beberapa repositori batch (khususnya Homebrew, Chocolatey, dll.) Belum kacau. Akibatnya, mereka akan menerima pembaruan Benang 2 lebih lambat dari yang lain. Kami sarankan untuk menggunakan versi set benang (atau set-versi kebijakan benang pada Benang 1).

Kami berharap bahwa sebagian besar perubahan ini akan selesai pada 1 Februari 2020.

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


All Articles