Το JavaScript είναι εύκολα η πιο χρησιμοποιημένη γλώσσα όταν πρόκειται για την ανάπτυξη ιστότοπων και εφαρμογών ιστού. Το πλήθος των πόρων είναι εκπληκτικό, και ακόμη περισσότερο, ο αριθμός των διαθέσιμων βιβλιοθηκών.
Αρχικά, αυτές οι βιβλιοθήκες είναι λίγες και εύκολες στη συντήρηση. Ωστόσο, σύντομα μπαίνει αρκετή εξάρτηση και απαιτείται μια πιο ώριμη λύση.
Εισαγάγετε το Node Package Manager (npm) - έναν διαχειριστή πακέτων JavaScript που χρησιμοποιείται κυρίως σε συνδυασμό με Node.js , αν και μπορεί να χρησιμοποιηθεί και ανεξάρτητα. Σας δίνει εξαιρετικό έλεγχο στις εξαρτήσεις του έργου σας και παρέχει έναν εξαιρετικό τρόπο να συμβάλλετε στον κόσμο ανοιχτού κώδικα.
Μπορείτε να ξεκινήσετε απλώς τρέχοντας npm install
και την ένεση στο αρχείο JavaScript.
Θέλετε να εγκαταστήσετε μια συγκεκριμένη έκδοση; Κανένα πρόβλημα. Εκτέλεση npm install @1.2.3
.
Θέλετε να εγκαταστήσετε ένα πακέτο παγκοσμίως (όπως το Mocha ή το Angular-CLI); Απλώς προσθέστε ένα -g
αρέσει: npm install -g angular-cli mocha
.
Βεβαίως, οι περισσότερες περιπτώσεις χρήσης σταματούν σε μια εγκατάσταση npm και δεν υπάρχει ανάγκη για οτιδήποτε άλλο. Ωστόσο, το npm έχει πολλές πρόσθετες λειτουργίες, τις οποίες θα σας καθοδηγήσω, επισημαίνοντας αυτές που θεωρώ απαραίτητες, πραγματικά χρήσιμες ή απλώς καταπληκτικές.
Το CLI είναι όπου οι χρήστες περνούν το μεγαλύτερο μέρος του χρόνου τους αλληλεπιδρώντας με το npm και η διεπαφή βοήθειας είναι πραγματικά χρήσιμη.
Η βοήθεια ερωτήματος (npm help
) αναδεικνύει μια ολόκληρη σειρά επιλογών και εκτελείται npm help-search
σάς δίνει μια λίστα αποτελεσμάτων αναζήτησης απευθείας από την υπογραφή npm.
Εδώ είναι οι βασικές εντολές που ξεχωρίζουν.
install
: Αναφέρεται εδώ λόγω της απόλυτης ανάγκης του όταν εργάζεστε με το npm. Χρησιμοποιείται είτε για την εγκατάσταση ενός νέου πακέτου τοπικά είτε παγκοσμίως (κατά την προσθήκη -g
) ή για την εγκατάσταση εξαρτήσεων που αναφέρονται στο package.json
αρχείο (περισσότερα για αυτό αργότερα).
uninstall
: Αυτό είναι επίσης απαραίτητο. Χρησιμοποιείται για την εκκαθάριση ενός συγκεκριμένου πακέτου από το node_modules
κατάλογος είτε τοπικά είτε παγκοσμίως (κατά την προσθήκη -g
).
access
: Αυτή είναι η παιδική χαρά των διαχειριστών δικαιωμάτων χρήστη npm εντός του πλαισίου npm-οργανισμών και των πακέτων (ιδιωτικών). Σοβαρά ισχυρά πράγματα. Χρησιμοποιείται σε συνδυασμό με adduser
, owner
, team
, κ.λπ., δίνει λεπτό έλεγχο για το ποιος έχει πρόσβαση σε αυτό.
bin
: Πού είναι εγκατεστημένα τα πακέτα; Εκτελέστε αυτήν την εντολή για να δείτε την απόλυτη διαδρομή αρχείου.
cache
: Εάν ξεκινήσετε την εγκατάσταση πακέτων από npm αριστερά, δεξιά και κέντρο, αυτή η εντολή είναι αρκετά χρήσιμη. Καλέστε το με το ls
δευτερεύουσα εντολή για να δείτε μια λίστα με τοπικά αποθηκευμένα πακέτα ή με το clean
δευτερεύουσα εντολή για εκκαθάριση όλων των πακέτων που βρίσκονται στην προσωρινή μνήμη. Επιστροφή όταν το μητρώο npm ήταν ακόμη λίγο ασταθές, αυτό ήταν απαραίτητο για να επιστρέψετε σε ένα σταθερό περιβάλλον ή για να επαναφέρετε τα πράγματα όταν δεν έχετε ρυθμίσει σωστά τα δικαιώματα npm.
config
: Θα μπούμε στις διάφορες επιλογές διαμόρφωσης αργότερα, αλλά αυτή η εντολή ασχολείται κυρίως με τις ιδιότητες διαρκούς διαμόρφωσης στο τοπικό ή καθολικό αρχείο διαμόρφωσης χρησιμοποιώντας το set
, get
ή delete
δευτερεύουσες εντολές.
dedupe
ή ddp
: Όταν εργάζεστε σε ένα έργο για μεγάλο χρονικό διάστημα και εγκαθιστάτε πακέτα κατευθείαν από το npm, αυτή η εντολή θα ακολουθήσει το τοπικό δέντρο πακέτων και θα προσπαθήσει να απλοποιήσει τις εξαρτήσεις.
link
: Όταν αναπτύσσετε το δικό σας πακέτο npm, αυτό σας επιτρέπει να δημιουργήσετε ένα symlink στο παγκόσμιο περιβάλλον ώστε να μπορεί να δοκιμαστεί σαν να έχει εγκατασταθεί παγκοσμίως από το μητρώο npm. Για παράδειγμα, εάν γράφετε ένα εργαλείο συναρμολόγησης σε κόμβο που έχει CLI εγκατεστημένο παγκοσμίως, μπορείτε να εκτελέσετε αυτήν την εντολή και να ελέγξετε τη συμπεριφορά του CLI σας χωρίς να χρειάζεται να την αναπτύξετε πρώτα.
ls
: Χρησιμοποιείται για να απεικονίσει τις εξαρτήσεις πακέτων και τις εξαρτήσεις τους, σε μια δομή δέντρου. Είναι ωραίο να βλέπεις και είναι επίσης χρήσιμο για συγκρίσεις με άλλα έργα.
outdated
: Χρησιμοποιείται για την αξιολόγηση της τρέχουσας κατάστασης των εγκατεστημένων εξαρτήσεων και του εάν είναι ή όχι. Σε έργα όπου η λίστα εξάρτησης ρίζας έχει εκατοντάδες γραμμές, ένας μη αυτόματος έλεγχος πακέτων είναι σχεδόν αδύνατος. Προσθήκη -g --depth=0
σε αυτήν την εντολή σας επιτρέπει να ελέγχετε επίσης τα παγκοσμίως εγκατεστημένα πακέτα σας.
publish
: Αυτή η εντολή είναι απαραίτητη κατά την ανάπτυξη του δικού σας πακέτου για npm. Κάνει ακριβώς όπως υποδηλώνει το όνομα. δημοσιεύει το πακέτο σας στο μητρώο npm.
search
: Χρησιμοποιήστε αυτό για αναζήτηση στο μητρώο για όλα τα πακέτα που περιέχουν το κείμενο που παρέχεται στο τρίτο όρισμα.
shrinkwrap
: Εν ολίγοις, αυτές οι εντολές σάς επιτρέπουν να κλειδώσετε συγκεκριμένες εκδόσεις εξάρτησης σε ένα πακέτο με τη σειρά, έτσι ώστε ένα χαλαρό εξάμηνο ( σημασιολογική έκδοση ) ο αριθμός δεν σπάει τον κωδικό παραγωγής.
star
: Σας αρέσει πραγματικά ένα πακέτο που χρησιμοποιείτε; Χρησιμοποιήστε αυτήν την εντολή για να δείξετε την εκτίμησή σας απευθείας από το τερματικό, το οποίο στη συνέχεια αντικατοπτρίζεται στη σελίδα του πακέτου στο μητρώο npm.
update
: Συνήθως ακολουθεί το outdated
εντολή για ενημέρωση τυχόν παλιών πακέτων.
version
: Αυτό σας δίνει συντομογραφία για να χτυπήσετε το package.json
ιδιότητα έκδοσης και κάντε μια ετικέτα git όλα σε ένα.
Σημειώστε ότι οι περισσότερες από αυτές τις εντολές μπορούν να λάβουν υπο-εντολές ή / και διαμορφώσεις, και αυτή η λίστα δεν αποτελεί σε καμία περίπτωση τελική συζήτηση για το CLI.
Η διαμόρφωση είναι ένα σημαντικό μέρος των npm και υπάρχουν πολλοί τρόποι με τους οποίους μπορούν να ρυθμιστούν οι μεταβλητές διαμόρφωσης.
Πρώτον, η διαμόρφωση μπορεί να ρυθμιστεί μέσω του CLI από το τερματικό.
Συνήθως θα μοιάζει κάπως έτσι: npm -- []
.
Εάν η τιμή δεν έχει καθοριστεί, η επιλογή θα οριστεί ως αληθής από προεπιλογή.
Για παράδειγμα, ας υποθέσουμε ότι εργάζεστε σε ένα πακέτο (ιδιωτικό) npm και αποφασίζετε να το δημοσιεύσετε ως δημόσιο πακέτο.
Αυτό γίνεται εύκολα προσθέτοντας --access=public
στο publish
εντολή. Εάν δεν ορίσαμε την ιδιότητα ως δημόσια, η προεπιλογή θα ήταν περιορισμένη (ιδιωτική).
Η διαμόρφωση που προσαρτάται σε άλλες εντολές, όπως αυτή δεν παραμένει παντού, επομένως μπορεί να γίνει κουραστικό να ορίσετε μια σειρά από διαμορφώσεις μέσω του CLI.
Σε αυτές τις περιπτώσεις, μπορεί να είναι καλύτερο να ρυθμίσετε τη διαμόρφωση χρησιμοποιώντας περιβαλλοντικές μεταβλητές.
Οποιαδήποτε περιβαλλοντική μεταβλητή έχει οριστεί με το npm_config_
Το πρόθεμα θα χρησιμοποιηθεί για τη διαμόρφωση npm.
Για παράδειγμα: export npm_config_registry=localhost:4321
θα ορίσει την επιλογή διαμόρφωσης μητρώου σε παγκόσμιο επίπεδο και όταν εκτελείται το npm θα χρησιμοποιήσει το μητρώο npm που βρίσκεται στο localhost στη θύρα 4321.
Μπορείτε επίσης να ορίσετε επιλογές διαμόρφωσης χρησιμοποιώντας το ειδικό .npmrc
αρχείο, το οποίο μπορεί να ρυθμιστεί σε διαφορετικά επίπεδα ανάλογα με τις απαιτήσεις σας:
package.json
αρχείο, συνήθως path/to/project/.npmrc
~/.npmrc
$PREFIX/etc/npmrc
/path/to/npm/npmrc
.Ρυθμίσεις διαμόρφωσης στο .npmrc
Το αρχείο μπορεί να τροποποιηθεί και να συνεχιστεί χρησιμοποιώντας το CLI εκτελώντας μια εντολή σε αυτήν τη μορφή: npm config set
.
Για παράδειγμα, μπορείτε να εκτελέσετε npm config set access public
να κάνει τη δημοσίευση της διαμόρφωσης ενός πακέτου (ιδιωτικό) πακέτο μόνιμα δημόσια.
Από προεπιλογή, αυτή η εντολή θα διατηρούσε τη διαμόρφωση τοπικά (η διαμόρφωση σε επίπεδο χρήστη όπως περιγράφεται παραπάνω), αλλά μπορείτε να προσθέσετε -g
να το επιμείνουμε παγκοσμίως.
Όταν απαιτείται διαρκής ρύθμιση παραμέτρων σε επίπεδο έργου ή στο ενσωματωμένο επίπεδο, το .npmrc
το αρχείο πρέπει να τροποποιηθεί χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας κειμένου.
Τέλος, η διαμόρφωση μπορεί να ρυθμιστεί από το package.json
αρχείο. Ωστόσο, αυτό σπάνια χρησιμοποιείται (και θα πρέπει να χρησιμοποιείται μόνο εάν απαιτείται ρητά), επειδή ένα επίπεδο έργου .npmrc
Το αρχείο είναι το συμβατικά προτιμώμενο μέρος για να ορίσετε τη διαμόρφωση του πακέτου.
access
: Όπως συζητήθηκε παραπάνω, χρησιμοποιείται για τον ορισμό δικαιωμάτων.
always-auth
: Είναι σημαντικό να σημειωθεί ότι αυτή η ρύθμιση από προεπιλογή στο false. Όταν οριστεί σε true, το npm θα απαιτεί πάντα έλεγχο ταυτότητας κατά την επικοινωνία με το μητρώο.
ca
: Προεπιλογές στην αρχή έκδοσης πιστοποιητικών npm (CA). Μπορεί να αλλάξει σε μηδέν για να επιτρέπεται η πρόσβαση μόνο σε γνωστούς καταχωρητές ή σε ένα συγκεκριμένο πιστοποιητικό CA για να παραχωρείται πρόσβαση μόνο σε αυτό το συγκεκριμένο. Αυτή η ρύθμιση, μαζί με cafile
, cert
και strict-ssl
, χρησιμοποιούνται σπάνια, αλλά μιλάμε για την ασφάλεια και την αξιοπιστία του npm, επιτρέποντας την ειρήνη να γνωρίζουμε ότι το πακέτο που εγκαθιστάτε προέρχεται από την πηγή που περιμένετε.
color
: Αυτό είναι από προεπιλογή αληθινό, δίνοντάς σας ένα διάλειμμα από την τυπική ζοφερότητα του τερματικού χρωματίζοντας το stdout
που επιτρέπεται από τους περιγραφείς αρχείων tty. Εάν οριστεί σε ψευδές, το τερματικό παραμένει θαμπό. Όταν έχει οριστεί σε always
, εξέρχεται πάντα στο χρώμα.
depth
: Αυτή η ρύθμιση επιτρέπει τον λεπτομερή έλεγχο του περιεχομένου που βλέπετε με αναδρομικές εντολές, όπως ls
και outdated
, ορίζοντας πόσο βαθιά εκτελούνται. Η τιμή 0 θα αξιολογήσει μόνο το πρώτο επίπεδο εξαρτήσεων ενώ το άπειρο (η προεπιλογή) θα προκαλέσει την αξιολόγηση όλων των επιπέδων εξαρτήσεων. Η εξαίρεση σε αυτόν τον κανόνα είναι όταν το χρησιμοποιείτε με outdated
; Σε αυτήν την περίπτωση, το άπειρο ερμηνεύεται ως 0 για να εξασφαλιστεί πιο σχετική έξοδος.
dev
: Αυτό έχει οριστεί ως false από προεπιλογή, αλλά όταν έχει οριστεί σε true (κατά την εκτέλεση npm install
) όλων των εξαρτήσεων ανάπτυξης στο package.json
το αρχείο θα εγκατασταθεί μαζί με τις κανονικές εξαρτήσεις.
dry-run
: Όταν αυτή η ρύθμιση έχει οριστεί ως αληθινή, το npm δεν θα κάνει αλλαγές στο πακέτο σας, αλλά θα σας πει αντίθετα τι θα είχε κάνει. Αυτό μπορεί να είναι πολύ χρήσιμο κατά την εκτέλεση ορισμένων εντολών, όπως dedupe
ή update
.
git-tag-version
: Ορίζεται ως αληθές από προεπιλογή. Αυτή η ρύθμιση επισημαίνει μια έκδοση στο git κατά την εκτέλεση του npm version
εντολή. Εάν χρησιμοποιείτε το npm ως διαχειριστή πακέτων για ένα μεγάλο έργο που έχει ετικέτες σε εκδόσεις στο git, μπορεί να σας εξοικονομήσει χρόνο και να θυμάστε να ενημερώσετε το package.json
αρχείο για εσάς.
loglevel
: Από προεπιλογή, ρυθμίζεται σε warn
, η οποία δίνει σφάλμα και έξοδο προειδοποίησης κατά την εκτέλεση εντολών npm. Άλλες ρυθμίσεις περιλαμβάνουν silent
, που δεν παρέχει έξοδο. error
, το οποίο καταγράφει μόνο σφάλματα στην έξοδο. http
, το οποίο ανακοινώνει μόνο σφάλματα αιτήματος http. info
, για επιθυμητή ενημερωτική έξοδο); verbose
, που καταγράφει σχεδόν τα πάντα. και silly
, το οποίο, όπως υποδηλώνει το όνομα, δίνει μια ανόητη παραγωγή και στη συνέχεια κάποια.
production
: Όταν αυτό οριστεί ως αληθές, το npm ενεργεί ανάλογα και εκτελεί όλες τις εντολές σε κατάσταση παραγωγής. Αυτό σημαίνει ότι η ανάπτυξη ή οι προαιρετικές εξαρτήσεις δεν θα εγκατασταθούν, ούτε θα εκτελεστούν εργασίες σχετικές με την ανάπτυξη.
rollback
: Όταν οριστεί σε true, καταργούνται όλες οι αποτυχημένες εγκαταστάσεις. Αυτό είναι χρήσιμο όταν αποτύχει η εγκατάσταση εξαρτήσεων. Ανάλογα με το επίπεδο καταγραφής, θα πρέπει να μπορείτε να δείτε ποιες εγκαταστάσεις απέτυχαν, να τις σημειώσετε και να εκτελέσετε το npm install
εντολή με την επιλογή επαναφοράς ορισμένη σε true. Στη συνέχεια, με τις σημειώσεις σας και μια στεγνή εγκατάσταση (όπως περιγράφεται παραπάνω), μπορείτε στη συνέχεια να εντοπίσετε το πρόβλημα.
αποθήκευση : When installing a package directly from the registry, you can append
–save to the command which will add the installed package to the dependencies option in the
package.json file. For example,
npm εγκατάσταση lodash` θα προσθέσει lodash στις εξαρτήσεις σας.
save-dev
: Παρόμοια με την επιλογή αποθήκευσης διαμόρφωσης, προσθέστε --save-dev
κατά την εγκατάσταση ενός πακέτου, και στη συνέχεια θα προστεθεί στην επιλογή devDependencies στο package.json
αρχείο.
save-optional
: Παρόμοια με την επιλογή αποθήκευσης διαμόρφωσης, προσθέστε --save-optional
κατά την εγκατάσταση ενός πακέτου και στη συνέχεια θα προστεθεί στην προαιρετική επιλογή Εξαρτήσεις στο package.json
αρχείο.
save-exact
: Κατά την εγκατάσταση πακέτων, το save
, save-dev
και save-optional
οι επιλογές τροποποιούν το package.json
αρχείο εισάγοντας το εγκατεστημένο πακέτο στην αντίστοιχη ιδιότητά του με έναν τελεστή semver range. Κατά την επίκληση της ρύθμισης διαμόρφωσης 'save-ακριβής' με τιμή true, σε συνδυασμό με μία από τις παραπάνω αναφερόμενες ρυθμίσεις, χρησιμοποιείται ένας συγκεκριμένος αριθμός έκδοσης, αγνοώντας το εύρος των semver.
save-prefix
: Αυτό ορίζει τον τελεστή εύρους εξαμήνου κατά τη χρήση save
, save-dev
ή save-optional
. Η προεπιλογή είναι ^
, επιτρέποντας την πραγματοποίηση μικρών αναβαθμίσεων στα πακέτα κατά την εγκατάσταση. Αυτό μπορεί να οριστεί σε οποιονδήποτε έγκυρο τελεστή εύρους χειριστή.
tag-version-prefix
: Η συμβατική προεπιλογή είναι v
, καθορίζοντας τι προετοιμάζεται για την έκδοση ετικέτας git κατά την εκτέλεση npm version
.
Μπορείτε επίσης να χρησιμοποιήσετε το npm για να ενημερώσετε τον εαυτό του.
Απλώς εκτελέστε npm install -g [email protected]
και το npm θα ενημερωθεί στην τελευταία σταθερή έκδοση. Είναι σημαντικό να σημειωθεί ότι κάθε έκδοση του Node.js αποστέλλεται με μια συγκεκριμένη έκδοση του npm, και σύμφωνα με την εμπειρία μου, δεν θα πρέπει να χάσετε πολύ με αυτό το ζεύγος.
Στο τέλος της ημέρας, η πρότασή μου είναι να παραμείνουμε στο ζεύγος όπως προορίζονται.
Όταν χρησιμοποιείτε το npm ως αυτόνομο εργαλείο, βεβαιωθείτε ότι έχετε κατανοήσει τις συνέπειες της χρήσης οποιασδήποτε έκδοσης που θα επιλέξετε. Υπάρχει ένα εξαιρετικό εργαλείο για τη διαχείριση διαφορετικών εκδόσεων Node.js (και με τη σειρά των εκδόσεων npm) στο ίδιο σύστημα που ονομάζεται nvm .
Το package.json
Το αρχείο είναι το κρίσιμο στοιχείο που συνδέει τα πάντα μαζί.
Είναι μια απαίτηση για τη δημοσίευση ενός πακέτου στο μητρώο npm και εκεί είναι το μέρος της διαχείρισης των εξαρτήσεων.
Έχει δύο απαιτούμενα πεδία, δηλαδή 'όνομα' και 'έκδοση' και μαζί αυτές οι ιδιότητες πρέπει να είναι ένα μοναδικό αναγνωριστικό.
Το πεδίο ονόματος πρέπει να συμμορφώνεται με ορισμένους κανόνες, όπως ορίζονται από το τεκμηρίωση npm σχετικά με την ονομασία , και το πεδίο έκδοσης υπόκειται στο εξειδικεύσεις εξαμήνου .
Πέρα από αυτό, μπορείτε να έχετε μια λίστα εξαρτήσεων μήκους ενός μιλίου, και να ορίσετε μια συγκεκριμένη έκδοση που θα χρησιμοποιείται για καθένα από αυτά, χρησιμοποιώντας τις εκδόσεις semver και τους τελεστές εύρους. Ακολουθεί μια λίστα με άλλες αξιοσημείωτες ιδιότητες.
Το 'main' καθορίζει το σημείο εισόδου στην εφαρμογή σας, το οποίο είναι προεπιλεγμένο σε index.js
. Ανάλογα με τη σύμβαση ή το πλαίσιο σας, μπορεί να είναι app.js
ή main.js
. Φυσικά, μπορείτε να το κάνετε ό, τι θέλετε.
Αυτή είναι μια υποτιμημένη ιδιοκτησία.
Πρώτον, μπορεί να χρησιμοποιηθεί για να κάνει πράγματα κατά την προ-δημοσίευση.
Δεύτερον, παρέχει ένα μέρος όπου μπορείτε ψευδώνυμο μια σειρά από συχνά χρησιμοποιούμενες εντολές, που κυμαίνονται από εργασίες κατασκευής (ορίζονται σε gulp ή grunt), ενεργοποιώντας την εγκατάσταση άλλων εξαρτήσεων (με κάτι σαν bower), ξεκινώντας έναν διακομιστή ανάπτυξης με webpack ή εκτελεί ένα σύνολο εντολών bash.
Αυτή η ιδιότητα είναι μια λίστα πακέτων που απαιτούνται από την εφαρμογή σας, μαζί με τον συμβατό αριθμό semver. Είναι μια αξιοσημείωτη ιδιότητα επειδή μπορεί να τροποποιηθεί από το τερματικό όταν εγκαθιστάτε τοπικά πακέτα.
Αυτό γίνεται με την προσθήκη --save
(ή το στενό -S
) στο τέλος του npm install
εντολή.
Όταν το κάνετε αυτό, τα νέα πακέτα εγκατάστασης προστίθενται στη λίστα εξαρτήσεων στο package.json
αρχείο.
Παρομοίως, μια εξάρτηση μπορεί επίσης να αφαιρεθεί προσθέτοντας --save
κατά την εκτέλεση του npm uninstall
εντολή.
Είναι σημαντικό να γνωρίζετε τα μοτίβα εκδόσεων εξαμήνου για κάθε μία από τις εξαρτήσεις και τι σημαίνουν.
Εάν ο κανόνας του semver είναι πολύ αυστηρός, χάνετε νέες δυνατότητες και βελτιώσεις, ενώ εάν ο κανόνας του semver είναι πολύ χαλαρός, μπορεί να εγκατασταθεί μια σπάσιμο έκδοση ενός πακέτου.
Μια κατεστραμμένη εγκατάσταση πακέτου μπορεί να αποδειχθεί αρκετά δύσκολο να επιλυθεί, ειδικά όταν χρησιμοποιείται η ελαχιστοποιημένη έκδοση του πακέτου.
Χωριστά από την ιδιότητα dependencies, η ιδιότητα 'devDependencies' σάς επιτρέπει να ορίσετε εξαρτήσεις που χρησιμοποιούνται μόνο κατά τη φάση ανάπτυξης και δεν απαιτούνται για την παραγωγή παραγωγής (όπως ESLint, πακέτα grunt-contrib και Protractor). Όπως και με τις εξαρτήσεις, αυτή η ιδιότητα μπορεί να τροποποιηθεί από το τερματικό προσθέτοντας --save-dev
(ή το στενό -D
) στο τέλος του npm install
εντολή ή το npm uninstall
εντολή. Η ίδια προσοχή ισχύει για την εκδοχή όπως αναφέρεται στις εξαρτήσεις.
Εδώ μπορείτε να καθορίσετε τα εκτελέσιμα αρχεία του πακέτου σας, όπως τη διαδρομή προς ένα βοηθητικό πρόγραμμα CLI. Αυτή η ιδιότητα λέει στο npm να δημιουργήσει τοπικά ή καθολικά symlinks στα εκτελέσιμα αρχεία σας κατά την εγκατάσταση του πακέτου σας.
Όπως συζητήθηκε νωρίτερα, αυτό είναι όπου ορίζετε τις ρυθμίσεις διαμόρφωσης αν και το package.json
αρχείο.
Όταν οριστεί σε true, το npm θα αρνηθεί να δημοσιεύσει το πακέτο.
Αυτό δεν πρέπει να συγχέεται με τη ρύθμιση διαμόρφωσης πρόσβασης.
Αυτή είναι μια εύχρηστη ρύθμιση όταν έχετε ένα έργο που χρησιμοποιεί npm μαζί με το package.json
αλλά δεν προορίζεται για δημοσίευση στο μητρώο npm, είτε με έκταση είτε δημόσια.
Εάν αλλάξει η πρόθεσή σας, απλώς αλλάξτε τη ρύθμιση σε ψευδής και θα μπορείτε να δημοσιεύσετε το πακέτο σας.
Το package.json
Το αρχείο δέχεται επίσης προσαρμοσμένες ιδιότητες, αρκεί το όνομα να μην είναι ήδη καθορισμένο ή δεσμευμένο.
Το οικοσύστημα npm είναι γεμάτο με πακέτα, γραμμένα από χιλιάδες διαφορετικούς προγραμματιστές σε όλο τον κόσμο. Ο καθένας λύνει κάποιο είδος προβλήματος, παρέχοντας μια αφαίρεση ή παρουσιάζοντας μια εφαρμογή κάτι.
Οι πιθανότητες είναι ότι, σε κάποιο σημείο, θα θελήσετε επίσης να αναπτύξετε το δικό σας πακέτο για κοινή χρήση.
Αρχικά, πρέπει να συντάξετε ένα package.json
αρχείο με τις ελάχιστες απαιτούμενες ιδιότητες 'όνομα' και 'έκδοση', και στη συνέχεια την 'κύρια' ιδιότητα για να καθορίσετε το σημείο εισόδου, για παράδειγμα index.js.
Γράψτε τον κωδικό σας σε αυτό το αρχείο index.js, συνδεθείτε με τον λογαριασμό χρήστη npm ή δημιουργήστε έναν νέο χρήστη από το τερματικό και είστε έτοιμοι να τον δημοσιεύσετε στο μητρώο npm.
Τα πακέτα μπορεί να είναι δημόσια ή ιδιωτικά.
Τα δημόσια πακέτα είναι δωρεάν για δημοσίευση και είναι διαθέσιμα για χρήση από όλους.
Τα ιδιωτικά πακέτα, που ονομάζονται πακέτα scoped, μπορούν να δημοσιευτούν μόνο εάν έχετε πληρώσει χρήστη ιδιωτικών ενοτήτων και μπορούν να ταυτοποιηθούν από το διακριτό @username/
που προστίθεται στο όνομα του πακέτου.
Τα πακέτα με δυνατότητα κάλυψης μπορούν επίσης να δημοσιευτούν δημόσια καλώντας το publish
εντολή με --access=public
.
Επιπλέον, εάν αφιερώσετε περισσότερο χρόνο για την επέκταση και τη βελτίωση της βάσης κώδικα του πακέτου σας και είναι καιρός να δημοσιευτεί μια νέα έκδοση, αλλάζετε απλώς την έκδοση (σύμφωνα με τους κανόνες και τη σύμβαση semver) του πακέτου στο package.json
αρχείο και τύπος npm publish
.
Μπορείτε επίσης να χρησιμοποιήσετε τη διεπαφή της γραμμής εντολών και να καλέσετε npm version
, όπου ο τύπος ενημέρωσης είναι patch
, minor
ή major
, όπως περιγράφεται από το semver, και αυτό στη συνέχεια αυξάνει αυτόματα το αριθμός έκδοσης στο package.json
αρχείο.
Και πάλι, το τεκμηρίωση npm γιατί αυτό είναι εξαιρετικό, και θα ήταν μάταιο να επαναλάβουμε τα λόγια τους.
Αυτό που μπορεί να ειπωθεί για τους οργανισμούς στο πλαίσιο της npm είναι ότι είναι εξαιρετικά λεπτόκοκκο, και όταν διαχειρίζεται σωστά, μεγάλες ομάδες και άτομα, που εργάζονται σε scoped ή δημόσια πακέτα με ένα όνομα, μπορούν να διαχειριστούν και να περιορίσουν πολύ καλά.
Παρόλο που είναι πολύπλοκο να μάθετε, είναι πολύ ικανοποιητικό.
Τελικά, η τεκμηρίωση που παρέχει το npm είναι εκτεταμένη και θα πρέπει να συμβουλευτείτε για λεπτομέρειες, αλλά αυτό το άρθρο παρέχει μια χρήσιμη επισκόπηση τόσο της βασικής όσο και της πιο προηγμένης, εμπλεκόμενης λειτουργικότητας, μεταφέροντας την απίστευτη εμφάνιση του npm.
Όπως με όλα τα πράγματα, υπάρχουν ισχυρές απόψεις και υπάρχουν πολλά σφάλματα. Αλλά αν δεν έχετε δοκιμάσει ποτέ npm (ή κόμβο, για αυτό το θέμα), βουτήξτε και εξερευνήστε το μόνοι σας. Οι πιθανότητες είναι ότι θα το απολαύσετε περισσότερο από όσο νομίζετε.
Για πιο ενδιαφέροντα άρθρα στο npm, εξετάστε το ενδεχόμενο να διαβάσετε Χρήση του Scala.js με npm και Browserify .