npm vs npx - Hvad er forskellen?

Hvis du nogensinde har brugt Node.js, skal du have brugt npm helt sikkert.

npm (node-pakkehåndtering) er den afhængighed / pakkehåndtering, du får ud af kassen, når du installerer Node.js. Det giver en måde for udviklere at installere pakker både globalt og lokalt.

Nogle gange vil du måske se på en bestemt pakke og prøve nogle kommandoer. Men du kan ikke gøre det uden at installere afhængighederne i din lokale node_modulesmappe.

Det er her npx kommer ind.

I denne artikel skal vi se på forskellene mellem npm og npx og lære at få det bedste ud af begge.

Lad os først forstå, hvad npm faktisk er, og hvad vi kan gøre med det.

npm pakkehåndtering

npm er et par ting. Først og fremmest er det et online arkiv til offentliggørelse af open-source Node.js-projekter.

For det andet er det et CLI-værktøj, der hjælper dig med at installere disse pakker og administrere deres versioner og afhængigheder. Der er hundredtusinder af Node.js-biblioteker og applikationer på npm, og mange flere tilføjes hver dag.

npm i sig selv kører ikke nogen pakker. Hvis du vil køre en pakke ved hjælp af npm, skal du angive den pakke i din package.jsonfil.

Når eksekverbare filer installeres via npm-pakker, opretter npm links til dem:

  • lokale installationer har links oprettet i ./node_modules/.bin/biblioteket
  • globale installationer har links oprettet fra det globale bin/bibliotek (for eksempel: /usr/local/binpå Linux eller %AppData%/npmpå Windows)

For at udføre en pakke med npm skal du enten skrive den lokale sti som denne:

$ ./node_modules/.bin/your-package

eller du kan køre en lokalt installeret pakke ved at tilføje den til din package.jsonfil i sektionen scripts, sådan:

{ "name": "your-application", "version": "1.0.0", "scripts": { "your-package": "your-package" } }

Derefter kan du køre scriptet ved hjælp af npm run:

npm run your-package

Du kan se, at det at køre en pakke med almindelig npm kræver en hel del ceremoni.

Heldigvis er det her npx er praktisk.

npx pakkeløberen

Siden npm version 5.2.0 npx er pre-bundtet med npm. Så det er stort set en standard i dag.

npx er også et CLI-værktøj, hvis formål er at gøre det let at installere og administrere afhængigheder, der er hostet i npm-registreringsdatabasen.

Det er nu meget nemt at køre enhver slags Node.js-baseret eksekverbar, som du normalt ville installere via npm.

Du kan køre følgende kommando for at se, om den allerede er installeret til din nuværende npm-version:

$ which npx

Hvis det ikke er det, kan du installere det sådan:

$ npm install -g npx

Når du først er sikker på, at du har det installeret, lad os se et par af de brugssager, der gør npx ekstremt hjælpsom.

Kør let en lokalt installeret pakke

Hvis du ønsker at udføre en lokalt installeret pakke, skal du bare skrive:

$ npx your-package

npx vil kontrollere, om eller findes i $PATHeller i de lokale projektbinarier, og i så fald vil den udføre den.

Udfør pakker, der ikke tidligere er installeret

En anden stor fordel er evnen til at udføre en pakke, der ikke tidligere var installeret.

Nogle gange vil du bare bruge nogle CLI-værktøjer, men du vil ikke installere dem globalt bare for at teste dem. Dette betyder, at du kan spare lidt diskplads og kun køre dem, når du har brug for dem. Dette betyder også, at dine globale variabler bliver mindre forurenede.

Kør kode direkte fra GitHub

execute-gist-script-with-npx

Denne er smuk rad.

Du kan bruge npx til at køre alle GitHub-gists og -lagre. Lad os fokusere på at udføre en GitHub-kerne, fordi det er lettere at oprette en.

Det mest basale script består af den primære JS-fil og en package.json. Når du har konfigureret filerne, skal du bare køre npx med linket til den kerne som vist på billedet ovenfor.

Her kan du finde den kode, som jeg brugte til dette eksempel.

Sørg for at læse omhyggeligt ethvert script, før du udfører det for at undgå alvorlige problemer, der kan opstå på grund af ondsindet kode.

Test forskellige pakkeversioner

npx gør det ekstremt let at teste forskellige versioner af en Node.js-pakke eller et modul. For at teste denne fantastiske funktion skal vi installere create-react-apppakken lokalt og teste en kommende version.

Dette vil liste nogle dist tags nær slutningen af ​​output. Dist-tags giver aliaser for versionsnumre, hvilket gør det meget nemmere at skrive.

$ npm v create-react-app
create-react-app-dist-tags

Lad os bruge npx til at prøve det nextdist-tag, create-react-appsom opretter appen inde i en sandkassemappe.

$ npx [email protected] sandbox

npx installerer midlertidigt den næste version af create-react-app, og derefter udføres den for at stilladsere appen og installere dens afhængigheder.

Når vi er installeret, kan vi navigere til appen sådan:

$ cd sandbox

og start det derefter med denne kommando:

$ npm start
create-react-app-npx-next-version

Det åbner automatisk React-appen i dit standard browservindue.

Nu har vi en app, der kører på den næste version af create-react-apppakken!

indeks-side-reager-app

Konklusion

npx hjælper os med at undgå versioner, afhængighedsproblemer og installation af unødvendige pakker, som vi bare vil prøve.

Det giver også en klar og nem måde at udføre pakker, kommandoer, moduler og endda GitHub-gister og -lagre på.

Hvis du ikke har brugt npx før, er det nu et godt tidspunkt at starte!

Dette blev oprindeligt sendt på min blog.

Du kan nå ud og bede mig om noget på Twitter og Facebook.