fotografie de Ross Findon pe Unsplash

recent, am scris o postare despre lucrurile pe care dezvoltatorii le spun și ce înseamnă. M-am distrat foarte mult scriind-o și m-am bucurat de comentariile pe care le-a generat postarea. Există mult mai multe lucruri despre care am vrut să scriu și intenționez să fac un post de urmărire în viitor cu mai multe lucruri, dar a existat un pic de jargon pe care l-am simțit meritat mai mult decât o singură explicație a paragrafului: Semver.

ce este Semver? Semver este prescurtarea de la versiunea semantică. Versiunea semantică este o modalitate standardizată de a da sens versiunilor software. Este o modalitate pentru autorii de software pentru a comunica succint consumatorilor de software-ul lor informații importante ar trebui să știe despre această versiune.

Semver este reprezentat de doar trei numere separate de perioade. De exemplu, versiunea curentă a lodash, de la data publicării acestui post, este 4.17.11, pe care o puteți găsi la pagina lor de profil github sau npm. Cu acest număr pot spune cu ușurință toate informațiile de compatibilitate am nevoie și pot lua decizii cu privire la dacă ar trebui să faceți upgrade la cea mai recentă revizuire și cât de mult de lucru care poate dura pentru a face acest lucru.

fiecare număr este un nivel diferit de revizuire, în funcție de ceea ce a fost modificat în revizuire. Citirea de la stânga pentru a scrie numărul reprezintă versiunea majoră curentă, versiunea minoră curentă a versiunii majore curente și versiunea Patch curentă a versiunii minore curente(Major.Minor.Patch). Folosind exemplul Lodash de mai sus, 4.17.11 înseamnă Al 11-lea patch de la a 17-a versiune minoră, de la A 4-a versiune majoră. Atunci când un număr este crescut toate numerele la dreapta începe înapoi la zero.

o versiune de Patch-uri este utilizată pentru a semnifica faptul că modificările codului din această revizuire nu au adăugat caracteristici noi sau modificări API și sunt compatibile cu versiunea anterioară. Este cel mai frecvent utilizat pentru a semnifica o remediere a erorilor. Cel mai important lucru de știut este că codul nu a schimbat modul în care este utilizat. Folosind exemplul lodash de mai sus, în cazul în care o nouă revizuire patch-uri este trimis, atunci versiunea ar fi 4.17.12

Minor

o versiune minoră este utilizată pentru a semnifica faptul că funcționalitatea a fost adăugată, dar codul este compatibil înapoi. Păstrarea cu exemplul lodash, dacă se adaugă o nouă funcție sau un nou parametru opțional este adăugat la o funcție existentă, atunci versiunea ar fi 4.18.0 . Cel mai important lucru de reținut este că această funcționalitate adăugată este opțională și prin actualizarea la această versiune nu ar trebui să necesite modificări de cod din partea utilizatorului

Major

când efectuați modificări la API-ul public și Codul nu mai este compatibil înapoi, atunci ați făcut modificări de „rupere”. Aceasta necesită o creștere majoră a revizuirii. Aceasta poate însemna că o caracteristică a fost eliminată sau s-a modificat funcționalitatea care necesită ca utilizatorul să modifice codul pentru a accepta actualizarea. Folosind același exemplu, o versiune majoră ar fi de 5.0.0

pre-lansare

lucrurile sunt ușor diferite dacă versiunea majoră este zero. Un număr de versiune Major zero indică faptul că software-ul este în dezvoltare rapidă și nu are un API stabil. Aceasta înseamnă, de asemenea, că fiecare creștere minoră poate avea modificări de rupere. Un exemplu în acest sens este React Native, care este în prezent pe versiunea 0.57.8 aceasta înseamnă că pentru a face upgrade la versiunea 57 de la 56 poate necesita modificări de cod și poate să nu fie compatibil cu alte dependențe din proiect. Actualizările corecțiilor ar trebui să fie considerate compatibile înapoi

de ce este important acest lucru?

după ce ați citit toate acestea, s-ar putea să vă gândiți: „nu intenționez să Public o bibliotecă sau un pachet npm. De ce este util să știi asta?”În primul rând, vă recomand să publicați un pachet. Veți învăța multe trecând prin acest proces. În al doilea rând, ca dezvoltator care aduce aceste biblioteci și pachete, este important să le mențineți actualizate și acest sistem de versiuni vă ajută să luați decizii pentru a vă actualiza dependențele nu doar mai ușor de făcut, ci și automatizat.

când instalați un pachet de la npm veți observa că pachetul.json va fi actualizat și va arăta în cele din urmă așa ceva:

"dependencies": { "react": "^16.6.3", "react-clean-form": "^2.1.2", "react-dom": "^16.6.3", "styled-components": "^4.1.1"},

veți observa că în fața fiecăruia dintre numerele lor de versiune este un carat. Ce spune acest lucru npm (sau fire) că doriți cea mai recentă versiune care este încă compatibilă cu numărul versiunii. Dacă doriți să vă asigurați că ați primit doar actualizări de patch-uri și nu actualizări minore ale versiunii, atunci ați adăuga o tildă în loc de carate astfel: "react": "~16.6.3" și, în cele din urmă, dacă introduceți doar numărul versiunii, atunci veți obține doar acea versiune specifică. Practic, indicați la ce nivel de compatibilitate înapoi vă simțiți confortabil.

această convenție permite managerului de pachete să ia decizii inteligente pentru dvs. Dacă ar fi să clonez proiectul de mai sus și să rulez instalarea npm. Nu aș primi react versiunea 16.6.3, aș primi versiunea 16.7.0 în schimb. Acest lucru se datorează faptului că 16.7.0 este încă compatibil cu 16.6.3, dar este mai actualizat cu cele mai recente patch-uri și caracteristici. Când executați actualizarea npm, nu instalează doar cea mai recentă versiune compatibilă înapoi în conformitate cu regulile dvs., ci și numărul versiunii din pachetul dvs.json, de asemenea. Când executați NPM audit-fix, acest lucru spune npm pentru a rula NPM update pe acele pachete care au Cunoscut probleme de securitate, astfel încât să puteți obține cele mai recente patch-uri. Dacă remedierea este într-o versiune care nu se potrivește regulilor dvs. de confort, vă va anunța că trebuie să o remediați manual.

Semver este un instrument puternic. Cu trei numere, autorii pot comunica informații foarte importante consumatorilor software-ului lor. Acest lucru ne permite, în calitate de consumatori, să automatizăm sarcina obositoare de a ne menține software-ul actualizat în funcție de nivelul nostru de confort și să petrecem mai mult timp și sarcinile pe care le iubim: scrierea unui cod uimitor care rezolvă problemele. Pentru o explicație mai completă a semver, aș recomanda verificarea semver.org

Lasă un răspuns

Adresa ta de email nu va fi publicată.