npm vs npx - Ποια είναι η διαφορά;

Εάν έχετε χρησιμοποιήσει ποτέ το Node.js, τότε σίγουρα θα πρέπει να έχετε χρησιμοποιήσει το npm .

Το npm (node ​​package manager) είναι η εξάρτηση / διαχείριση πακέτων που βγαίνετε από το κουτί κατά την εγκατάσταση του Node.js. Παρέχει έναν τρόπο στους προγραμματιστές να εγκαταστήσουν πακέτα τόσο σε παγκόσμιο όσο και σε τοπικό επίπεδο.

Μερικές φορές μπορεί να θέλετε να ρίξετε μια ματιά σε ένα συγκεκριμένο πακέτο και να δοκιμάσετε μερικές εντολές. Αλλά δεν μπορείτε να το κάνετε αυτό χωρίς να εγκαταστήσετε τις εξαρτήσεις στον τοπικό σας node_modulesφάκελο.

Εκεί μπαίνει το npx .

Σε αυτό το άρθρο, θα ρίξουμε μια ματιά στις διαφορές μεταξύ των npm και npx και θα μάθουμε πώς να έχουμε το καλύτερο και από τα δύο.

Αρχικά, ας καταλάβουμε τι είναι πραγματικά το npm και τι μπορούμε να κάνουμε με αυτό.

npm ο διαχειριστής πακέτων

Το npm είναι μερικά πράγματα. Πρώτα απ 'όλα, είναι ένα διαδικτυακό αποθετήριο για τη δημοσίευση έργων Node.js ανοιχτού κώδικα.

Δεύτερον, είναι ένα εργαλείο CLI που σας βοηθά να εγκαταστήσετε αυτά τα πακέτα και να διαχειριστείτε τις εκδόσεις και τις εξαρτήσεις τους. Υπάρχουν εκατοντάδες χιλιάδες βιβλιοθήκες και εφαρμογές Node.js στο npm και πολλές άλλες προστίθενται κάθε μέρα.

Το npm από μόνο του δεν εκτελεί πακέτα. Εάν θέλετε να εκτελέσετε ένα πακέτο χρησιμοποιώντας npm, πρέπει να καθορίσετε αυτό το πακέτο στο package.jsonαρχείο σας .

Όταν τα εκτελέσιμα προγράμματα εγκαθίστανται μέσω πακέτων npm, το npm δημιουργεί συνδέσμους σε αυτά:

  • Οι τοπικές εγκαταστάσεις έχουν συνδέσμους που έχουν δημιουργηθεί στον ./node_modules/.bin/κατάλογο
  • Οι καθολικές εγκαταστάσεις έχουν συνδέσμους που έχουν δημιουργηθεί από τον καθολικό bin/κατάλογο (για παράδειγμα: /usr/local/binσε Linux ή σε %AppData%/npmWindows)

Για να εκτελέσετε ένα πακέτο με npm πρέπει είτε να πληκτρολογήσετε την τοπική διαδρομή, ως εξής:

$ ./node_modules/.bin/your-package

ή μπορείτε να εκτελέσετε ένα τοπικά εγκατεστημένο πακέτο προσθέτοντάς το στο package.jsonαρχείο σας στην ενότητα σεναρίων, όπως αυτό:

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

Στη συνέχεια, μπορείτε να εκτελέσετε το σενάριο χρησιμοποιώντας npm run:

npm run your-package

Μπορείτε να δείτε ότι η εκτέλεση ενός πακέτου με απλό npm απαιτεί αρκετή τελετή.

Ευτυχώς, αυτό είναι όπου το npx είναι βολικό.

npx ο δρομέας πακέτων

Δεδομένου ότι η έκδοση npm 5.2.0 npx είναι προεπιλεγμένη με npm. Έτσι είναι σχεδόν ένα πρότυπο στις μέρες μας.

Το npx είναι επίσης ένα εργαλείο CLI του οποίου σκοπός είναι να διευκολύνει την εγκατάσταση και τη διαχείριση εξαρτήσεων που φιλοξενούνται στο μητρώο npm.

Τώρα είναι πολύ εύκολο να εκτελέσετε οποιοδήποτε είδος εκτελέσιμο με βάση το Node.js που κανονικά θα εγκαταστήσατε μέσω npm.

Μπορείτε να εκτελέσετε την ακόλουθη εντολή για να δείτε εάν είναι ήδη εγκατεστημένη για την τρέχουσα έκδοση npm:

$ which npx

Εάν δεν είναι, μπορείτε να το εγκαταστήσετε ως εξής:

$ npm install -g npx

Μόλις βεβαιωθείτε ότι το έχετε εγκαταστήσει, ας δούμε μερικές από τις περιπτώσεις χρήσης που κάνουν το npx εξαιρετικά χρήσιμο.

Εκτελέστε εύκολα ένα τοπικά εγκατεστημένο πακέτο

Εάν θέλετε να εκτελέσετε ένα τοπικά εγκατεστημένο πακέτο, το μόνο που χρειάζεται να κάνετε είναι να πληκτρολογήσετε:

$ npx your-package

Το npx θα ελέγξει αν υπάρχει ή υπάρχει στα $PATHτοπικά δυαδικά έργα και εάν ναι θα το εκτελέσει.

Εκτελέστε πακέτα που δεν έχουν εγκατασταθεί προηγουμένως

Ένα άλλο σημαντικό πλεονέκτημα είναι η ικανότητα εκτέλεσης ενός πακέτου που δεν είχε εγκατασταθεί προηγουμένως.

Μερικές φορές θέλετε απλώς να χρησιμοποιήσετε ορισμένα εργαλεία CLI, αλλά δεν θέλετε να τα εγκαταστήσετε παγκοσμίως, μόνο για να τα δοκιμάσετε. Αυτό σημαίνει ότι μπορείτε να εξοικονομήσετε χώρο στο δίσκο και να τους εκτελέσετε μόνο όταν τους χρειάζεστε. Αυτό σημαίνει επίσης ότι οι καθολικές μεταβλητές σας θα είναι λιγότερο μολυσμένες.

Εκτελέστε κώδικα απευθείας από το GitHub

εκτελέστε-gist-script-with-npx

Αυτό είναι ένα όμορφο ραδιόφωνο.

Μπορείτε να χρησιμοποιήσετε το npx για να εκτελέσετε οποιεσδήποτε λίστες και αποθετήρια του GitHub. Ας επικεντρωθούμε στην εκτέλεση ενός βασικού GitHub επειδή είναι πιο εύκολο να δημιουργήσετε ένα.

Το πιο βασικό σενάριο αποτελείται από το κύριο αρχείο JS και ένα package.json. Αφού ρυθμίσετε τα αρχεία, το μόνο που έχετε να κάνετε είναι να εκτελέσετε το npx με το σύνδεσμο προς αυτήν την ουσία, όπως φαίνεται στην παραπάνω εικόνα.

Εδώ μπορείτε να βρείτε τον κωδικό που χρησιμοποίησα για αυτό το παράδειγμα.

Βεβαιωθείτε ότι έχετε διαβάσει προσεκτικά οποιοδήποτε σενάριο πριν το εκτελέσετε για να αποφύγετε σοβαρά προβλήματα που μπορεί να προκύψουν λόγω κακόβουλου κώδικα.

Δοκιμάστε διαφορετικές εκδόσεις πακέτων

Το npx καθιστά εξαιρετικά εύκολο να δοκιμάσετε διαφορετικές εκδόσεις ενός πακέτου ή λειτουργικής μονάδας Node.js. Για να δοκιμάσουμε αυτό το καταπληκτικό χαρακτηριστικό, θα εγκαταστήσουμε τοπικά το create-react-appπακέτο και θα δοκιμάσουμε μια επερχόμενη έκδοση.

Αυτό θα εμφανίσει μερικές ετικέτες dist κοντά στο τέλος της εξόδου. Οι ετικέτες Dist παρέχουν ψευδώνυμα για αριθμούς έκδοσης που το καθιστούν πολύ πιο εύκολο να πληκτρολογήσετε.

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

Ας χρησιμοποιήσουμε το npx για να δοκιμάσουμε την nextετικέτα dist της create-react-appοποίας θα δημιουργήσει την εφαρμογή μέσα σε έναν κατάλογο sandbox.

$ npx [email protected] sandbox

Το npx θα εγκαταστήσει προσωρινά την επόμενη έκδοση create-react-appκαι, στη συνέχεια, θα εκτελεστεί για να σκαλωσιά την εφαρμογή και να εγκαταστήσει τις εξαρτήσεις της.

Μόλις εγκατασταθεί, μπορούμε να περιηγηθούμε στην εφαρμογή ως εξής:

$ cd sandbox

και μετά ξεκινήστε με αυτήν την εντολή:

$ npm start
create-react-app-npx-next-έκδοση

Θα ανοίξει αυτόματα την εφαρμογή React στο προεπιλεγμένο παράθυρο του προγράμματος περιήγησής σας.

Τώρα έχουμε μια εφαρμογή που τρέχει στην επόμενη έκδοση του create-react-appπακέτου!

ευρετήριο-σελίδα-αντίδραση-εφαρμογή

συμπέρασμα

Το npx μας βοηθά να αποφύγουμε την έκδοση, ζητήματα εξάρτησης και την εγκατάσταση περιττών πακέτων που θέλουμε να δοκιμάσουμε.

Παρέχει επίσης έναν σαφή και εύκολο τρόπο εκτέλεσης πακέτων, εντολών, λειτουργικών μονάδων, ακόμη και gitHub gists και αποθετηρίων.

Εάν δεν έχετε χρησιμοποιήσει npx στο παρελθόν, τώρα είναι καλή στιγμή να ξεκινήσετε!

Αρχικά δημοσιεύτηκε στο ιστολόγιό μου.

Μπορείτε να επικοινωνήσετε μαζί μου και να με ρωτήσετε οτιδήποτε στο Twitter και στο Facebook.