Η σύνδεση στο VPN δεν θα έπρεπε να σημαίνει επεξεργασία της ρύθμισης μητρώου του npm δύο φορές την ημέρα. Μια καταχώριση εύρους σε αρχείο ρυθμίσεων επιπέδου έργου μπορεί να στέλνει τα πακέτα της εταιρείας σε ένα μητρώο και όλα τα άλλα στο δημόσιο, χωρίς εναλλαγή και χωρίς παράκαμψη που μένει πίσω ένα απόγευμα Παρασκευής. Το αγκάθι είναι ότι αυτό λύνει μόνο την ονομασία· η δρομολόγηση, τα διαπιστευτήρια και η προτεραιότητα ρυθμίσεων είναι τρία ξεχωριστά πράγματα που το καθένα αποτυγχάνει με τον τρόπο του.

Δύο ονόματα, δύο προορισμοί

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

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

registry=https://registry.npmjs.org/
@acme:registry=https://packages.corp.example/
//packages.corp.example/:_authToken=${NPM_TOKEN}

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

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

Γράψτε το αρχείο με τη σωστή σειρά

Βάλτε το αρχείο του έργου πρώτο στη σκέψη σας, αν και το npm διαβάζει πολλά αρχεία. Ένα .npmrc στον κατάλογο του έργου είναι αυτό που κληρονομούν οι συνάδελφοί σας μέσω του αποθετηρίου, οπότε θα πρέπει να εκφράζει την κοινή πολιτική και όχι το προσωπικό σας διακριτικό. Αυτό το αρχείο είναι επίσης αυτό που θα διαβάσει ένας ελεγκτής. Κρατήστε το αρκετά μικρό ώστε να ελεγχθεί με μια ματιά.

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

Η γραμμή εύρους δεν είναι μπαλαντέρ. Ένα όνομα εκτός εύρους συνεχίζει να χρησιμοποιεί την προεπιλογή, και αυτή είναι η συμπεριφορά που θέλετε για κάθε εξάρτηση που δεν γράψατε εσείς.

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

Τα διαπιστευτήρια ανήκουν σε κεντρικό υπολογιστή, όχι σε έργο

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

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

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

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

Όταν κερδίζει το λάθος μητρώο

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

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

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

Λίστα ελέγχου πριν τη δέσμευση

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

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

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

Σχετικά άρθρα