Articles

Hvad er npm?

2011-08-26

npm er to ting: først og fremmest er det et online lager til udgivelse af open source-Node.JS-projekter; for det andet er det et kommandolinjeværktøj til interaktion med det nævnte lager, der hjælper med pakkeinstallation, versionsstyring og afhængighedsstyring. En overflod af Node.JS biblioteker og applikationer offentliggøres på npm, og mange flere tilføjes hver dag. Disse applikationer kan søges efter på https://www.npmjs.com/. Når du har en pakke, du vil installere, kan den installeres med en enkelt kommandolinjekommando.

lad os sige, at du er hårdt på arbejde en dag og udvikler den næste store applikation. Du støder på et problem, og du beslutter, at det er tid til at bruge det seje Bibliotek, du fortsat hører om – lad os bruge Caolan McMahons async som et eksempel. Heldigvis er npmmeget enkel at bruge: du skal kun køre npm install async, og det angivne modul vil blive installeret i den aktuelle mappe under ./node_modules/. Når du er installeret i dinnode_modules mappe, kan du brugerequire() på dem ligesom de var indbyggede.

lad os se på et eksempel på en global installation – lad os sigecoffee-script. Npm-kommandoen er enkel: npm install coffee-script -g. Dette vil typisk installere programmet og sætte et symlink til det i /usr/local/bin/. Dette giver dig derefter mulighed for at køre programmet fra konsollen ligesom ethvert andet CLI-værktøj. I dette tilfælde kører coffee giver dig nu mulighed for at bruge coffee-script REPL.

en anden vigtig anvendelse til npm er afhængighedsstyring. Når du har et knudeprojekt med en pakke.JSON-fil, du kan køre npm install fra projektets rod og npm vil installere alle de afhængigheder, der er angivet i pakken.json. Dette gør installation af en Node.js projekt fra en git repo meget lettere! For eksempel vows, en Node.JS test rammer, kan installeres fra git, og dens enkelt afhængighed, eyes, kan automatisk håndteres:

eksempel:

git clone https://github.com/cloudhead/vows.gitcd vowsnpm install

Når du har kørt disse kommandoer, vil du se ennode_modules mappe, der indeholder alle de projektafhængigheder, der er angivet i pakken.json.