Versi-versi dependensi

Versi semantik

Paket dalam Yarn mengikuti Semantic Versioning </ 0> , juga dikenal sebagai “semver”. Ketika anda menginstal sebuah paket baru dari registry, Yarn akan menambahkannya kedalam file package.json berikut versi semver yang valid.</p>

Versi ini dipecah menjadi major.minor.patch dan tampak seperti berikut: 3.14.1, 0.42.0, 2.7.18. Tiap bagiannya memiliki konsep penambahan sebagai berikut:

  • Tambahkan major ketika anda melakukan perubahan major atau perubahan yang inkompatibel di level API sebuah paket.
  • Tambahkan versi minor ketika anda menambahkan fungsionalitas atau API baru tanpa mengubah fungsionalitas atau API yang sudah ada
  • Naikkan versi patch ketika anda melakukan perbaikan bug tanpa mengubah fungsi atau API yang sudah ada

** Catatan: </ 0> Ada juga kadang-kadang “label” atau “ekstensi” ke format semver yang menandai hal-hal seperti pra-rilis atau beta (misalnya ` 2.0.0-beta.3 </ 1> )</p>

</blockquote>

Ketika pengembang berbicara tentang dua versi semver yang "kompatibel" satu sama lain, mereka mengacu pada perubahan belakang-kompatibel </ 0> ( minor </ 1> dan patch </ 1> ).</p>

Rentang versi

Bila Anda ingin menetapkan ketergantungan Anda tentukan nama dan berbagai versi </ 0> di Anda package.json </ 1> seperti salah satu dari ini:</p>

{
   "dependensi": {
     "paket-1": " & gt; = 2.0.0 & lt; 3.1.4",
     "paket-2": "^ 0.4.2",
     "paket-3": "~ 2.7.1 "
   }}
`</pre> 
> 
> Anda akan melihat bahwa kita memiliki sekumpulan karakter yang terpisah dari versinya. Karakter ini, ` & gt; = </ 0> ,  & lt; </ 0> ,  ^ </ 0> , dan  ~ </ 0> , adalah  operator </ 1> dan mereka biasanya menentukan  rentang versi </ 1> .</p>

Tujuan dari rentang versi adalah menentukan versi dependensi mana yang akan bekerja untuk kode Anda.

Komparator

Setiap rentang versi terdiri dari komparator </ 0> . Komparator ini hanya operator </ 1> diikuti oleh versi </ 1> . Berikut adalah beberapa operator dasar:</p>

Komparator Deskripsi
& lt; 2.0.0`</td> > > Versi yang *** kurang dari </ 0> ` 2.0.0 </ 1></td> </tr>
& lt; = 3.1.4`</td> > > Versi yang *** kurang dari atau sama dengan </ 0> ` 3.1.4 </ 1></td> </tr>
& gt; 0.4.2`</td> > > Versi yang *** lebih besar dari </ 0> ` 0.4.2 </ 1></td> </tr>
& gt; = 2.7.1`</td> > > Versi yang *** lebih besar dari atau sama dengan </ 0> ` 2.7.1 </ 1></td> </tr>
= 4.6.6`</td> > > Setiap versi *** sama dengan </ 0> ` 4.6.6 </ 1></td> </tr> </tbody> </table>

Catatan </ 0> : Jika tidak ada operator yang ditentukan, maka = </ 1> diasumsikan dalam rentang versi . Jadi operator = </ 1> secara efektif bersifat opsional.</p> </blockquote>

Persimpangan

Komparator dapat digabungkan dengan spasi untuk membuat set komparator </ 0> . Ini menciptakan persimpangan persimpangan </ 0> dari komparator yang ada di dalamnya. Sebagai contoh, komparator menetapkan & gt; = 2.0.0 & lt; 3.1.4 </ 0> berarti "Lebih besar dari atau sama dengan 2.0.0 </ 0> dan </ 2> kurang dari 3.1.4 </ 0> " </ 1> .</p>

Serikat pekerja

Rentang versi lengkap dapat menyertakan rangkaian union </ 0> dari beberapa komparator yang digabungkan oleh || </ 1> . Jika kedua sisi serikat pekerja merasa puas, maka keseluruhan rentang versi terpenuhi. Misalnya, rentang versi <2.0.0 || > 3.1.4 </ 0> berarti "Kurang dari 2.0.0 </ 0> atau </ 3> lebih besar dari 3.1 .4 </ 0> " </ 2> .</p>

Tag pra-rilis

Versi juga dapat memiliki pre-release tag </ 0> (misalnya 3.1.4-beta.2 </ 1> ). Jika komparator menyertakan versi dengan tag pra-rilis, ini hanya akan sesuai dengan versi yang memiliki versi < major > < major > < major > < min > </> .</p>

Misalnya, kisaran & gt; = 3.1.4-beta.2 </ 0> akan cocok dengan 3.1.4-beta.2 </ 0> atau 3.1.4-beta.12 </ 0> , namun tidak tidak </ 1> cocok 3.1.5-beta.1 </ 0> meskipun secara teknis </ 1> "lebih besar dari atau sama dengan" ( & gt; = </ 0> ) versi 3.1.4-beta.2 </ 0> .</p>

Pra-rilis cenderung mengandung perubahan yang melanggar dan biasanya Anda tidak ingin mencocokkan pra-rilis di luar versi yang telah Anda tentukan sehingga perilaku ini berguna.

Rentang versi lanjutan

Rentang tanda hubung

Rentang tanda hubung (misalnya 2.0.0 - 3.1.4 </ 0> ) tentukan kumpulan inklusif </ 1> . Jika bagian dari versi ditinggalkan (misalnya 0,4 </ 0> atau 2 </ 0> ), maka isinya diisi dengan angka nol.</p>

Rentang versi Rentang versi yang diperluas
2.0.0 - 3.1.4`</td> > > </tr> > > </tbody> </table> > > ##### X-Ranges > > Salah satu ` X </ 0> , x </ 0> , atau * </ 0> dapat digunakan untuk meninggalkan sebagian atau seluruh versi yang tidak ditentukan.</p>
Rentang versi Rentang versi yang diperluas
*`</td> > > </tr> </tbody> </table> > > ##### Tilde Ranges > > Menggunakan ` ~ </ 0> dengan versi kecil yang ditentukan memungkinkan perubahan patch </ 0> . Menggunakan ~ </ 0> dengan hanya versi utama yang ditentukan akan memungkinkan minor </ 0> perubahan.</p>
Rentang versi Rentang versi yang diperluas
~ 3.1.4`</td> > > </tr> > > </tbody> </table> > > > ** Catatan: </ 0> Secara default saat Anda menjalankan ` benang tambahkan [nama paket] </ 1> akan menggunakan rentang tanda hubung.</p> </blockquote>

Jika bagian dari versi ditinggalkan, bagian yang hilang diisi dengan angka nol. Namun, mereka tetap mengizinkan nilai itu diubah.

Rentang versi Rentang versi yang diperluas
^ 0.0.x`</td> > > > > </tr> > > > > </tbody> </table> > > > > ### Sumber daya lainnya > > > > * Untuk spesifikasi lengkap tentang bagaimana sistem versi ini bekerja, lihat node-semver </ 1> README </ 0> .</li>
  • Uji sistem versi ini pada paket sebenarnya menggunakan kalkulator semikonduktor npm </ 0> .</li> </ul>