11 Dependency Management Tools för webbutvecklare
Beroenden är en hörnsten i modern webbutveckling. Dessa är de nödvändiga verktygen, plugins, biblioteken och ramarna nödvändig för att bygga webbsidor på hög nivå.
Det stora antalet beroenden har skett i de senaste åren. Över tiden har utvecklare antagit verktyg för beredskapshantering som lindra stressen att hålla beroenden organiserade och aktuella. Dessa verktyg leder till ett optimerat arbetsflöde för utvecklare och projektledare.
Jag har katalogiserat de bästa beredskapsverktygen här, inklusive både väletablerade och nya plattformar. Professionell webbutveckling kräver fortlöpande lärande och jag skulle argumentera för att beroendehantering är ett kompetensvärt värt lärande.
1. NPM
Jag kunde inte skriva den här guiden utan att ge kredit till Node Package Manager. Byggd på Node.js, driver detta system ett enormt förvar av 100 000+ paket och moduler.
Varje projekt kan använda en setup.json-filinstallation via NPM och till och med hanteras med Gulp (on Node). Beroenden kan uppdateras och optimeras direkt från terminalen. Och du kan bygga nya projekt med beroendefiler och versionsnummer som automatiskt dras från filen package.json.
NPM är värdefull för mer än bara beroendeberoende, och det är praktiskt taget ett måste-redskap för modern webbutveckling. Om du är förvirrad, kolla in denna Reddit-tråd för en nybörjarförklaring.
2. Bower
Pakethanteringssystemet Bower körs på NPM vilket verkar lite överflödigt men det finns en skillnad mellan de två, särskilt att NPM erbjuder fler funktioner medan Bower syftar till en minskning av filstorlek och belastningstider för frontend beroenden.
Kolla in denna Stack fråga för att lära dig mer om de subtila skillnaderna.
Vissa devs hävdar att Bower är i grunden föråldrad eftersom den körs på NPM, en tjänst som kan göra nästan allt Bower kan göra. Generellt sett är detta inte fel.
Men devs borde inse Bower can optimera arbetsflödet specifikt med frontendberoende. Jag rekommenderar Ben McCormicks artikel Är Bower Useful att lära sig mer om det värde som erbjuds från båda pakethanteringsverktygen.
3. RubyGems
RubyGems är en pakethanterare för Ruby med stor popularitet bland webbutvecklare. Projektet är öppen källkod och inkluderar alla gratis Ruby-ädelstenar.
För att ge en kort översikt för nybörjare, a “pärla” är bara några kod som körs på en Ruby-miljö. Detta kan leda till program som Bundler som hanterar pärlemodeller och håller allt uppdaterat.
Rails-utvecklare kommer att älska den här funktionen, men hur är det med frontendpaket? Eftersom Ruby är öppen källkod kan utvecklare bygga projekt som Bower for Rails. Detta ger förvaltning av frontendpaket till Ruby-plattformen med en liten inlärningskurva.
4. Kräver JS
Det är något speciellt om RequireJS eftersom det i första hand är en JS-verktygssats. Den kan användas till laddar JS-moduler snabbt inklusive nodmoduler.
Kräver JS kan upptäcka automatiskt nödvändiga beroenden baserad på vad du använder så kan det hända att det är likartat med klassisk programvaruprogrammering i C / C ++ där bibliotek ingår i ytterligare bibliotek.
Du hittar en intressant GitHub diskussion om detta ämne och det värde det erbjuder moderna webbutvecklare. Beviljat andra JS-hanteringsverktyg som webpack har dykt upp, RequireJS arbetar fortfarande i produktionsmiljöer. Och om det fungerar för dig så är det allt som spelar roll.
5. Jam
Browserbaserad pakethantering kommer i en ny form med JamJS. Detta är en JavaScript-pakethanterare med automatisk hantering som liknar RequireJS.
Alla dina beroenden är dras in i en enda JS-fil som låter dig lägga till och ta bort objekt snabbt. Plus dessa kan uppdateras i webbläsaren oavsett andra verktyg du använder (som KravJS).
Bibliotek uppdateras utifrån de senaste versionerna via terminalen. Varje projekt kan vara skapas automatiskt med optimerade komponenter baserat på dina behov. Jam är gratis på GitHub och värt en titt om du har tid.
6. Browserify
De flesta utvecklare känner till Browserify även om det inte ingår i deras typiska arbetsflöde. Detta är ett annat verktyg för beredskapshantering som optimerar nödvändiga moduler och bibliotek genom att kombinera dem.
Dessa buntar är stöds i webbläsaren vilket betyder att du kan inkludera och slå samman moduler med vanlig JavaScript. Allt du behöver är NPM för att komma igång och sedan Browserify för att flytta.
Kolla in den här introduktionshandledningen för att se hur nod kan hanteras direkt i webbläsaren. Det finns också en lång handbok för Browserify som finns på GitHub gratis. Tanken är att ta med alla dessa nodverktyg i webbläsaren och spara tid genom att automatisera processen med Browserify.
7. Mantri
MantriJS är fortfarande i sitt tidiga utvecklingsstadium ett beroende system för applikationer mellan hög och hög nivå. Beroenden hanteras via namnområden och organiserade funktionellt för att undvika kollisioner och minska rodnad.
Mantri är för närvarande på v0.2.2 vid skrivningstillfället. Det är helt öppen källa och byggd för mer komplexa webbapplikationer som kräver stora bundar av beroenden. Mantri har som mål att följa modulära programmeringsmetoder och hoppas kunna uppmuntra utvecklare på samma väg.
8. Volo
Projekthanteringsverktyget volo är en open source NPM repo som kan skapa projekt, lägga till bibliotek och automatisera arbetsflöden.
Volo körs inom noden och bygger på JavaScript för projektledning. En kort introguide finns på GitHub som förklarar installationsprocessen och vanlig användning. Till exempel om du kör kommandot volo skapa
Du kan anbringa ett bibliotek som HTML5 Boilerplate.
Men förutom att skapa nya projekt kan du också lägg till / uppdatera bibliotek för äldre projekt. Volo knyter till allt du behöver för frontend-utveckling. Kolla in volos designmål för att se hur det fungerar i ett verkligt projekt.
9. Ender
Ender är “bibliotek utan bibliotek” och är en av de lättaste paketcheferna du hittar online. Det tillåter devs att söka igenom JS-paket och installera / kompilera dem direkt från kommandoraden. Ender är tänkt som “NPMs lillasyster” av dev teamet.
Naturligtvis är hela Ender-ramverket tillgängligt gratis på GitHub. Det är helt enkelt ett verktyg som du installerar för att hjälpa till hantera konsumtionen av frontend JavaScript-ramar för lokala projekt. Allt är tänkt att springa med lätthet till fullo potentialen för en frontend utvecklarens arbetsflöde.
Huvud Ender webbplats har kvalitetsdokumentation så det är värt att få en blick om du är intresserad.
10. pip
Den rekommenderade metoden för installation av Python beroenden är genom pip. Detta verktyg skapades av Python Packaging Authority och det är helt öppen källkod, precis som Python själv.
Majoriteten av Python-utvecklarna rekommenderar pip för beroenden, inklusive Django-laget. Oavsett om du bara har börjat med Python eller redan använder den konsekvent med backend-utveckling, är detta en pakethanterare du kommer att vara glad att ha i din verktygslåda.
11. Kompositör
Kompositör är en pakethanterare som mycket liknar NPM, men den är endast inriktad på PHP-bibliotek. Du kan hitta en lista över beroenden på Packagist som innehåller stora PHP-ramar som Laravel.
Om du är en PHP-utvecklare av något slag rekommenderar jag seriöst att titta på kompositör. Dess lätt att komma igång men svår att passa in i ditt arbetsflöde. Men med övning blir det en häftning för PHP dev-projekt.
Detta är ett mångsidigt verktyg med potential att växa ännu större i tid. Plus NPM kan mixa med kompositör för att skapa ett frontend + backend dependence management system för alla dina PHP / JS-projekt.
Avslutar
Det är uppenbart att många av dessa beroendeförvaltare har liknande egenskaper med liknande egenskaper. Vissa är byggda för lösa alternativa problem och kan till och med springa i tandem med varandra (dvs kompositör och NPM).
Ämnet av dependency management kan vara tufft för nya utvecklare. Jag rekommenderar att du väljer ett av dessa verktyg och undersöker djupt för att lära dig så mycket som möjligt. Prova att bygga små webbapps och lär dig varför beroendehantering är användbar.
När du har läst hur du applicerar dessa verktyg i ditt arbetsflöde kommer du aldrig överväga att gå tillbaka.