Κοινή χρήση τεχνολογίας

Διαχειριστές πακέτων - σύγκριση npm, νήμα, cnpm, pnpm

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. npm (διαχείριση πακέτου κόμβου)

1.1 Τοπική εγκατάσταση

Χρησιμοποιήστε την εντολή: npm install όνομα πακέτου ή npm i όνομα πακέτου
Τα τοπικά εγκατεστημένα πακέτα εμφανίζονται στον κατάλογο node_module κάτω από τον τρέχοντα κατάλογο
Εάν το τοπικά εγκατεστημένο πακέτο έχει CLI, το npm θα τοποθετήσει το σενάριο CLI του κάτω από το node_modules/.bin και θα χρησιμοποιήσει την εντολή npx για να το καλέσει.

1.2 Παγκόσμια εγκατάσταση

Τα καθολικά εγκατεστημένα πακέτα τοποθετούνται σε έναν ειδικό παγκόσμιο κατάλογο.
Χρησιμοποιήστε την εντολή npm install --global name πακέτο ή npm i -g όνομα πακέτου.
Το καθολικά εγκατεστημένο πακέτο δεν είναι διαθέσιμο για όλα τα έργα, παρέχει μόνο καθολικά εργαλεία CLI. Στις περισσότερες περιπτώσεις, δεν χρειάζεται να εγκαταστήσετε το πακέτο καθολικά.

1.3 Εντολή εγκατάστασης

Εξαρτάται από το περιβάλλον παραγωγής
npm i όνομα πακέτου
npm i -- αποθήκευση ονόματος πακέτου
npm i -S όνομα πακέτου
Εγκαταστήστε εξαρτήσεις στο περιβάλλον ανάπτυξης
npm i --save-dev όνομα πακέτου
npm i -D όνομα πακέτου

1.4 Όταν χρησιμοποιείτε το nodejs για την εισαγωγή μιας λειτουργικής μονάδας, εάν η διαδρομή της μονάδας δεν ξεκινά με ./ ή.../, ο κόμβος θα πιστεύει ότι η λειτουργική μονάδα που εισάγεται προέρχεται από τον κατάλογο node_modules.
Σενάριο 1.5 npm

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

2. Προηγούμενα προβλήματα με npm:

  • Οι κατάλογοι εξαρτήσεων είναι βαθιά ένθετοι: Στο παρελθόν, οι εξαρτήσεις npm ήταν ένθετες και το σύστημα των Windows δεν μπορούσε να υποστηρίξει καταλόγους που ήταν πολύ βαθύς.
  • Αργή ταχύτητα λήψης: Λόγω των βαθιών επιπέδων ένθεσης, οι λήψεις πακέτων μπορούν να είναι μόνο σειριακές λήψεις πολλών πακέτων της ίδιας έκδοσης.
  • Η έξοδος της κονσόλας είναι πολύπλοκη: εκτύπωση πολλών λεπτομερειών συσκευασίας
  • Πρόβλημα μεταμόσχευσης έργου: Στο παρελθόν, υπήρχε μόνο το αρχείο διαμόρφωσης πακέτου.json, αλλά όχι αρχείο πακέτου-lock.json.

3. Η εμφάνιση του νήματος επειδή έχει τα ακόλουθα πλεονεκτήματα:

  • Χρησιμοποιήστε μια επίπεδη δομή καταλόγου
  • παράλληλη λήψη
  • Χρησιμοποιήστε τοπική προσωρινή μνήμη
  • Βελτιώστε τις πληροφορίες εξόδου της κονσόλας και εξάγετε μόνο πληροφορίες κλειδιού
  • Χρησιμοποιήστε το αρχείο yarn-lock για να καταγράψετε ακριβείς εξαρτήσεις

4. Επηρεασμένος από το νήμα, το npm6 βασίστηκε στις προηγμένες έννοιες του νήματος και έκανε τις ακόλουθες βελτιστοποιήσεις:

  • Ισοπέδωση καταλόγου
  • παράλληλη λήψη
  • τοπική κρυφή μνήμη
  • Χρησιμοποιήστε το package-lock.json για να καταγράψετε ακριβείς εξαρτήσεις
  • Προστέθηκε ένας μεγάλος αριθμός ψευδώνυμων εντολών
  • Ενσωματωμένο npx, μπορείτε να ξεκινήσετε τοπικά εργαλεία CLI
  • Απλοποιεί σημαντικά την έξοδο της κονσόλας

5. cnpm

Ο διακομιστής μητρώου του npm βρίσκεται στο εξωτερικό, γεγονός που μπορεί να προκαλέσει αργές λήψεις ή αποτυχία. Στο παρελθόν, το npm δεν παρείχε τη λειτουργία τροποποίησης του μητρώου που δημιούργησε το Taobao, το οποίο είναι το Taobao npm που παρέχει επίσης ένα εργαλείο CLI.

6. pnpm

  • Όπως το npm και το νήμα, η προσωρινή μνήμη εξακολουθεί να χρησιμοποιείται για την αποθήκευση εγκατεστημένων πακέτων.Χρησιμοποιήστε το pnpm-lock.yaml για να καταγράψετε λεπτομερείς εκδόσεις εξαρτήσεων
  • Διαφορετικά από το νήμα και το npm, το pnpm χρησιμοποιεί συμβολικούς συνδέσμους και σκληρούς συνδέσμους για να τοποθετήσει εξαρτήσεις, αποφεύγοντας την αντιγραφή αρχείων, βελτιώνοντας την αποτελεσματικότητα εγκατάστασης και μειώνοντας σημαντικά τη χρήση του χώρου στο δίσκο.
  • Λόγω της χρήσης συμβολικών συνδέσμων και σκληρών συνδέσμων, το pnpm μπορεί να αποφύγει το πρόβλημα των πολύ μεγάλων διαδρομών στα συστήματα Windows, επομένως χρησιμοποιεί εξαρτήσεις δέντρων. Λόγω των εξαρτήσεων δέντρων, τα έργα μπορούν να χρησιμοποιούν μόνο άμεσες εξαρτήσεις, όχι έμμεσες εξαρτήσεις.

7. Αρχή pnpm:

  • Η ουσία ενός αρχείου: Το αρχείο είναι στην πραγματικότητα ένας δείκτης που δείχνει μια εξωτερική διεύθυνση αποθήκευσης (σκληρός δίσκος, μονάδα flash USB). Η διαγραφή ενός αρχείου στην πραγματικότητα διαγράφει τον δείκτη, επομένως είναι πολύ γρήγορη.
  • Αντίγραφο αρχείου: Αντιγράψτε το περιεχόμενο που δείχνει ο δείκτης αρχείου και, στη συνέχεια, δημιουργήστε έναν νέο δείκτη που δείχνει στο νέο περιεχόμενο.
  • Σκληρός σύνδεσμος: Αντιγραφή αρχείου Ο δείκτης σε άλλο αρχείο Β είναι ένας σκληρός σύνδεσμος προς το αρχείο Α.
  • Συμβολικός σύνδεσμος (μαλακός σύνδεσμος): Δημιουργήστε έναν συμβολικό σύνδεσμο Β για ένα αρχείο ή φάκελο Α και, στη συνέχεια, το Β δείχνει στο Α.
  • Συντόμευση: Παρόμοια με έναν συμβολικό σύνδεσμο, είναι μια μέθοδος σύνδεσης που υποστηριζόταν από τα Windows στις πρώτες μέρες. Δεν είναι μόνο δείκτης, αλλά περιέχει επίσης διάφορες πληροφορίες όπως δικαιώματα, συμβατότητα, μέθοδος εκκίνησης κ.λπ. Οι συντομεύσεις είναι μοναδικές για συστήματα Windows και δεν χρησιμοποιούνται σε όλες τις πλατφόρμες.

Η διαφορά μεταξύ συμβολικών συνδέσμων και σκληρών συνδέσμων

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