Foto Av Ross Findon På Unsplash

nylig skrev Jeg et innlegg om ting utviklere sier og hva de mener. Jeg hadde mye moro å skrive det og likte kommentarene som innlegget genererte. Det er mange flere ting jeg ønsket å skrive om, og jeg planlegger å gjøre et oppfølgingspost i fremtiden med flere ting, men det var en bit av lingo som jeg følte fortjente mer enn en enkelt avsnittsforklaring: Semver.

Hva Er Semver? Semver er en forkortelse for semantisk versjonskontroll. Semantisk Versjonskontroll er en standardisert måte å gi mening til programvareutgivelser. Det er en måte for programvareforfattere å kommunisere kortfattet til forbrukerne av deres programvare viktig informasjon de burde vite om denne utgivelsen.

Semver representeres av bare tre tall atskilt med punktum. For eksempel er den nåværende versjonen av lodash, fra publiseringsdatoen for dette innlegget, 4.17.11, som du finner på deres github eller npm profilside. Med dette nummeret kan jeg enkelt fortelle all kompatibilitetsinformasjonen jeg trenger og kan ta avgjørelser om jeg skal oppgradere til den nyeste revisjonen og hvor mye arbeid som kan ta for å gjøre det.

hvert tall er et annet revisjonsnivå, avhengig av hva som ble endret i revisjonen. Lesing fra venstre for å skrive tallet representerer gjeldende Hovedutgivelse, gjeldende Mindreutgivelse av gjeldende Hovedutgivelse og gjeldende Oppdateringsutgivelse av gjeldende Mindreutgivelse (Hovedutgivelse).Mindreårig.Oppdatering). Ved hjelp Av Lodash-eksemplet ovenfor, 4.17.11 betyr den 11. oppdateringen siden den 17. mindre utgivelsen, siden den 4. store utgivelsen. Når et tall økes alle tall til høyre start tilbake på null.

En Oppdateringsversjon brukes for å indikere at kodeendringene i denne revisjonen ikke har lagt til noen nye funksjoner eller API-endringer, og er bakoverkompatibel med den forrige versjonen. Det er vanligvis brukes til å betegne en bug fix. Det viktigste å vite er at koden ikke har endret måten den brukes på. Ved hjelp av lodash-eksemplet ovenfor, hvis en ny patch-revisjon sendes ut, vil versjonen være 4.17.12

Mindre

En mindre utgave brukes til å betegne at funksjonaliteten er lagt til, men koden er ellers bakoverkompatibel. Tråd med lodash eksempel, hvis en ny funksjon er lagt til eller en ny valgfri parameter er lagt til en eksisterende funksjon da versjonen ville være 4.18.0 . Det viktigste å huske er at denne ekstra funksjonaliteten er valgfri, og ved å oppgradere til denne versjonen bør ikke kreve kodeendringer på den delen av brukeren

Major

Når du gjør endringer i den offentlige API og koden er ikke lenger bakoverkompatibel, så du har gjort» bryte » endringer. Dette krever en større revisjonsøkning. Dette kan bety at en funksjon er fjernet eller funksjonaliteten er endret som krever at brukeren gjør endringer i koden for å godta oppdateringen. Ved hjelp av samme eksempel ville en stor utgivelse av 5.0.0

pre-release

Ting er litt annerledes hvis Hovedversjonen er null. Et Null hovedversjonsnummer indikerer at programvaren er i rask utvikling og ikke har en stabil API. Dette betyr også at hver mindre økning kan ha bryte endringer. Et eksempel På Dette Er React Native som er på versjon 0.57.8 Dette betyr at for å oppgradere til versjon 57 fra 56 kan kreve kodeendringer og kan ikke være kompatibel med andre avhengigheter i prosjektet. Patchoppdateringer bør fortsatt betraktes som bakoverkompatible

Hvorfor er dette viktig?

etter å ha lest alt dette kan du tenke, » jeg har ikke tenkt på å publisere et bibliotek eller en npm-pakke . Hvorfor er det nyttig å vite dette?»Først av alt anbefaler jeg at du publiserer en pakke. Du vil lære mye ved å gå gjennom prosessen. For det andre, som en utvikler som bringer inn disse bibliotekene og pakkene, er det viktig å holde dem oppdatert, og dette versjonssystemet bidrar til å ta beslutninger for å oppdatere avhengighetene dine, ikke bare enklere å lage, men automatisert.

når du installerer en pakke fra npm vil du legge merke til at pakken din.json vil bli oppdatert og vil til slutt se noe ut som dette:

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

Du vil legge merke til at foran hver av sine versjonsnumre er en karat. Dette forteller npm (eller yarn) at du vil ha den nyeste versjonen som fortsatt er bakoverkompatibel med versjonsnummeret. Hvis du ønsket å sørge for at du bare fikk patch oppdateringer og ikke mindre versjon oppdateringer, så du vil legge til en tilde i stedet for karat som dette: "react": "~16.6.3" og til slutt, hvis du bare sette versjonsnummeret i, så vil du bare få den spesifikke versjonen. I utgangspunktet angir du på hvilket nivå av bakoverkompatibilitet du er komfortabel med.

denne konvensjonen lar pakkebehandleren ta smarte beslutninger for deg. Hvis jeg skulle klone prosjektet ovenfor og kjøre npm install. Jeg ville ikke få react versjon 16.6.3, jeg ville få versjon 16.7.0 i stedet. Dette skyldes at 16.7.0 fortsatt er bakoverkompatibel med 16.6.3, men er mer oppdatert med de nyeste oppdateringene og funksjonene. Når du kjører npm update, installerer den ikke bare den nyeste bakoverkompatible versjonen i henhold til reglene dine, det støter også versjonsnummeret i pakken.json også. Når du kjører npm audit-fix, forteller dette npm å kjøre npm update på de pakkene som har kjente sikkerhetsproblemer, slik at du kan få de nyeste oppdateringene. Hvis reparasjonen er i en versjon som ikke passer dine regler for komfort, vil den gi deg beskjed om at du må fikse det manuelt.

Semver Er et kraftig verktøy. Med tre tall, forfattere kan kommunisere svært viktig informasjon til forbrukerne av deres programvare. Dette gjør at vi som forbrukere kan automatisere den kjedelige oppgaven med å holde programvaren oppdatert i henhold til vårt komfortnivå og bruke mer tid og oppgavene vi elsker å gjøre: skrive fantastisk kode som løser problemer. For en mer fullstendig forklaring på semver, vil jeg anbefale å sjekke ut semver.org

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.