foto door Ross Findon op Unsplash

onlangs schreef ik een bericht over dingen die ontwikkelaars zeggen en wat ze betekenen. Ik had veel plezier met het schrijven en genoten van de opmerkingen die de post gegenereerd. Er zijn veel meer dingen die ik wilde schrijven over en ik ben van plan op het doen van een follow-up post in de toekomst met meer dingen, maar er was een beetje lingo dat ik voelde verdiende meer dan een enkele paragraaf uitleg: Semver.

Wat is Semver? Semver is een afkorting voor semantic versioning. Semantic Versioning is een gestandaardiseerde manier om Betekenis te geven aan uw software releases. Het is een manier voor software auteurs om bondig te communiceren met de consumenten van hun software belangrijke informatie die ze moeten weten over deze release.

Semver wordt weergegeven door slechts drie getallen, gescheiden door perioden. Bijvoorbeeld, de huidige versie van lodash, vanaf de publicatiedatum van dit bericht, is 4.17.11, die je kunt vinden op hun GitHub of NPM profielpagina. Met dit nummer kan ik gemakkelijk vertellen alle compatibiliteit informatie die ik nodig heb en kan beslissingen nemen over als ik moet upgraden naar de laatste herziening en hoeveel werk dat kan duren om dat te doen.

elk nummer heeft een ander revisieniveau, afhankelijk van wat er bij de revisie is veranderd. Reading from left to write the number represents the current Major release, the current Minor release of the current Major release, and the current Patch release of the current Minor release(Major.Klein.Patch). Met behulp van het Lodash voorbeeld hierboven, 4.17.11 betekent de 11e patch sinds de 17e minor release, sinds de 4e grote release. Wanneer een getal wordt verhoogd beginnen alle getallen naar rechts terug bij nul.

een Patch release wordt gebruikt om aan te geven dat de code wijzigingen in deze revisie geen nieuwe functies of API wijzigingen heeft toegevoegd en is achterwaarts compatibel met de vorige versie. Het wordt meestal gebruikt om een bug fix betekenen. Het belangrijkste om te weten is dat de code de manier waarop het wordt gebruikt niet heeft veranderd. Met behulp van het lodash voorbeeld hierboven, als een nieuwe patch revisie wordt verzonden dan is de versie 4.17.12

Minor

een Minor release wordt gebruikt om aan te geven dat functionaliteit is toegevoegd, maar de code is verder achterwaarts compatibel. In overeenstemming met het lodash voorbeeld, als een nieuwe functie wordt toegevoegd of een nieuwe optionele parameter wordt toegevoegd aan een bestaande functie dan is de versie 4.18.0 . Het belangrijkste om te onthouden is dat deze toegevoegde functionaliteit optioneel is en door te upgraden naar deze versie zou het niet nodig moeten zijn dat de gebruiker

Major

wanneer u wijzigingen aanbrengt in de publieke API en de code niet langer achterwaarts compatibel is, dan hebt u “breaking” wijzigingen aangebracht. Dit vereist een aanzienlijke verhoging van de herziening. Dit kan betekenen dat een functie is verwijderd of functionaliteit is veranderd die de gebruiker nodig heeft om wijzigingen aan te brengen in de code om de update te accepteren. Met behulp van hetzelfde voorbeeld, een grote release zou door 5.0.0

Pre-release

dingen zijn iets anders als de hoofdversie een nul is. Een nul groot versienummer geeft aan dat de software in snelle ontwikkeling is en geen stabiele API heeft. Dit betekent ook dat elke kleine toename kan breken veranderingen. Een voorbeeld hiervan is React Native die momenteel op versie 0.57.8 staat. dit betekent dat om te upgraden naar versie 57 van 56 mogelijk code wijzigingen nodig hebben en mogelijk niet compatibel zijn met andere afhankelijkheden in het project. Patch-updates moeten nog steeds als achterwaarts compatibel worden beschouwd

Waarom is dit belangrijk?

na het lezen van dit alles zou je kunnen denken, “Ik ben niet van plan om een bibliotheek of een NPM-pakket te publiceren. Waarom helpt dit weten?”Allereerst raad ik u ten zeerste aan een pakket te publiceren. Je leert veel door het proces te doorlopen. Ten tweede, als een ontwikkelaar die brengt in deze bibliotheken en pakketten, is het belangrijk om ze up-to-date te houden en dit versiebeheersysteem helpt bij het nemen van beslissingen om uw afhankelijkheden niet alleen gemakkelijker te maken, maar geautomatiseerd.

wanneer u een pakket van npm installeert zult u merken dat uw pakket.json zal worden bijgewerkt en zal er uiteindelijk ongeveer zo uitzien:

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

u zult merken dat Voor elk van hun versienummers een karaat staat. Wat dit vertelt npm (of garen) dat u wilt dat de nieuwste release die is nog steeds achterwaarts compatibel met het versienummer. Als je er zeker van wilt zijn dat je alleen patch-updates hebt en geen kleine versie-updates, dan zou je een tilde toevoegen in plaats van de karaat als volgt: "react": "~16.6.3" en tenslotte, als je gewoon het versienummer erin stopt, dan krijg je alleen die specifieke versie. Kortom, U geeft aan op welk niveau van achterwaartse compatibiliteit bent u comfortabel met.

met deze conventie kan uw pakketbeheerder slimme beslissingen voor u nemen. Als ik het bovenstaande project zou klonen en npm install zou uitvoeren. Ik zou niet react versie 16.6.3 krijgen, Ik zou in plaats daarvan versie 16.7.0 krijgen. Dit komt omdat 16.7.0 is nog steeds achterwaarts compatibel met 16.6.3, maar is meer up-to-date met de nieuwste patches en functies. Wanneer u NPM update uitvoert, installeert het niet alleen de nieuwste achterwaarts compatibele versie volgens uw regels, het stoot ook het versienummer in uw pakket.json ook. Wanneer u NPM audit-fix uitvoert, vertelt dit npm om npm update uit te voeren op die pakketten met bekende beveiligingsproblemen, zodat u de nieuwste patches kunt krijgen. Als de oplossing is in een versie die niet past bij uw regels van comfort, het zal u laten weten dat je nodig hebt om het handmatig te repareren.

Semver is een krachtig hulpmiddel. Met drie nummers kunnen auteurs zeer belangrijke informatie communiceren aan de consumenten van hun software. Dit stelt ons als consumenten in staat om de vervelende taak van het houden van onze software up-to-date te automatiseren op basis van ons comfortniveau en besteden meer tijd en de taken die we graag doen: het schrijven van geweldige code die problemen oplost. Voor een meer volledige uitleg van semver, zou ik aanraden om uit te checken semver.org

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.