Bør du lægge mappen node_modules i Git?

2021 JavaScript Full-Stack Bootcamp er NU ÅBEN FOR TILMELDINGER!

Bør du lægge mappen node_modules i Git?

Jeg nævner Git, men det samme gælder for ethvert versionsstyringssystem, som du tilfældigvis bruger

Det er et godt spørgsmål at have. Der er fordele og ulemper.

Jeg foreslår, at standarden er ikke at committe mappen node_modules, og i stedet tilføje den til din .gitignore fil.

Du har måske særlige behov, der vender denne beslutning om.

Jeg diskuterer emnet, så du kan danne dig din egen mening.

Her er nogle argumenter for ikke at committe node_modules

Du holder din Git-historik ren. Når du tilføjer en ny pakke, gemmer du package.json– og package-lock.json-filændringerne. når du beslutter dig for at opdatere pakkeversionen, gemmer du kun package-lock.json-filændringen.

package-lock.json er en relativt ny funktion i npm, der forælder shrinkwrap-kommandoen, som blev brugt tidligere

Du undgår at skulle lægge muligvis hundredvis af MB af afhængigheder i dit repository, og det betyder, at det med tiden bliver hurtigere at arbejde med. Skift af grene og check ud af koden er 2 operationer, der er enormt påvirket af repositoryets størrelse.

Når du arbejder med grene, kan du have sammenføjningskonflikter, der rækker ud over din kode og i stedet involverer afhængighedernes kode. Dette er ikke rart at håndtere og kan få dig til at miste en masse tid. Undgå at sætte

En pull request eller merge, hvis du ændrer afhængighederne, vil have langt flere filer involveret i processen. Værktøjer bliver langsommere eller beslutter sig endda for ikke at vise den fulde diff (GitHub, for eksempel)

Native node-moduler skal omkompileres, hvis du distribuerer til en anden platform end din udviklingsmaskine (almindelig brugssituation: du udvikler på Mac, distribuerer på Linux). Du skal kalde npm rebuild, hvilket tager serveren ud af synkronisering.

Når du ikke committerer node_modules, indebærer det, at du skal liste alle dine moduler i package.json (og package-lock.json) som et obligatorisk trin. Det er godt, fordi du måske ikke har flid til at gøre det, og nogle af npm-operationerne kan gå i stykker, hvis du ikke gør det.

Tip: der er ikke behov for at bruge den specifikke version i din package.json-fil, ikke længere siden indførelsen af package-lock.json-filen.

Hvis du bruger separate dependencies– og devDependencies-sæt, så ved at committe node_modules-mappen committerer du i princippet devDependencies, og der er ingen (nem) måde for produktionsbygningen at slippe af med dem på.

Grunde, der kan få dig til at committe node_modules, og hvordan du kan afhjælpe dem

En npm-pakke kan blive fjernet af dens forfatter fra npm-registret. Det skete med den berømte left-pad-hændelse i 2016 (læs mere). Det er meget sjældent, at det sker for populære pakker. Hvis det sker, har du måske ikke længere adgang til det pågældende stykke funktionalitet.

Du kan også argumentere for, at npm ikke er garanteret at forblive i nærheden på ubestemt tid, den kan forsvinde, så en nem måde at garantere at have den fulde kode for din applikation i fremtiden er at committe den sammen med din app.

Hver gang du bruger en pakke, skal du oprette en fork på GitHub. Hver gang du bruger en pakke, skal du holde den opdateret med origin (kan automatiseres).

Dette er ikke altid praktisk, da pakker kan have snesevis af deres egne afhængigheder.

Du kan bruge en privat repository-server til dit projekt og bruge den til at hoste alle dine afhængigheder.

Optioner omfatter

  • sinopia
  • npm_lazy
  • npm-lazy-mirror
  • artifactory
  • npm Enterprise, fra npm-firmaet

En anden grund til at committe afhængighederne er muligheden for hurtigt at redigere koden, hvis du finder en fejl, eller hvis du ønsker at tilføje noget til et bibliotek.

Det er et tveægget sværd: Hvis du gør det, mister du muligheden for at opgradere pakken, hvis der kommer nye udgivelser, og det er kun godt til hurtige, midlertidige rettelser.

Den optimale løsning er enten at indsende en PR, der gør det, du ønsker, til det oprindelige projekt eller fork det og bruge din fork som en afhængighed.

Download min gratis Node.js Handbook

The 2021 JavaScript Full-Stack Bootcamp IS NOW OPEN FOR SIGNUPS UNTIL NEXT TUESDAY! Gå ikke glip af denne mulighed, tilmeld dig i dag!

Mere node tutorials:

  • Sådan bruger du promises og await med Node.js callback-baserede funktioner
  • The Node Core Modules
  • Parsing JSON with Node.js
  • Arbejde med fildeskriptorer i Node
  • Node.js Streams
  • Sådan får du den senest opdaterede dato for en fil ved hjælp af Node.js
  • The Pug Guide
  • Hent den aktuelle mappe i Node
  • Sådan bruger du Node.js REPL

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.