Πώς να αποθηκεύσετε τις ρυθμίσεις/αρχεία ρυθμίσεων ανάπτυξης του Node.js;
Έχω εργαστεί σε μερικές εφαρμογές Node και ψάχνω για ένα καλό μοτίβο αποθήκευσης ρυθμίσεων που σχετίζονται με την ανάπτυξη. Στον κόσμο του Django (απ' όπου προέρχομαι), η κοινή πρακτική θα ήταν να υπάρχει ένα αρχείο settings.py
που περιέχει τις τυπικές ρυθμίσεις (ζώνη ώρας κ.λπ.), και στη συνέχεια ένα αρχείο local_settings.py
για ρυθμίσεις που αφορούν την ανάπτυξη, δηλαδή σε ποια βάση δεδομένων να μιλήσει, ποια υποδοχή memcache, διεύθυνση ηλεκτρονικού ταχυδρομείου για τους διαχειριστές και ούτω καθεξής.
Έψαχνα για παρόμοια μοτίβα για το Node. Απλά ένα αρχείο ρυθμίσεων θα ήταν ωραίο, ώστε να μην χρειάζεται να μπλέκεται με όλα τα υπόλοιπα στο app.js
, αλλά θεωρώ σημαντικό να υπάρχει ένας τρόπος για να έχουμε συγκεκριμένες ρυθμίσεις για τον διακομιστή σε ένα αρχείο που δεν είναι στον έλεγχο του πηγαίου κώδικα. Η ίδια εφαρμογή θα μπορούσε κάλλιστα να αναπτυχθεί σε διαφορετικούς διακομιστές με τελείως διαφορετικές ρυθμίσεις, και το να πρέπει να ασχοληθώ με συγκρούσεις συγχώνευσης και όλα αυτά δεν είναι η ιδέα μου για διασκέδαση.
Υπάρχει λοιπόν κάποιο πλαίσιο/εργαλείο γι' αυτό ή ο καθένας φτιάχνει κάτι μόνος του;
Χρησιμοποιώ ένα
package.json
για τα πακέτα μου και έναconfig.js
για τις ρυθμίσεις μου, το οποίο μοιάζει με:Φορτώνω το config από το έργο μου:
και στη συνέχεια μπορώ να έχω πρόσβαση στα πράγματά μου από το
config.db_host
,config.db_port
, κλπ... Αυτό μου επιτρέπει είτε να χρησιμοποιώ σκληρά κωδικοποιημένες παραμέτρους, είτε παραμέτρους αποθηκευμένες σε περιβαλλοντικές μεταβλητές, αν δεν θέλω να αποθηκεύω κωδικούς πρόσβασης στον έλεγχο του πηγαίου κώδικα.Δημιουργώ επίσης ένα
package.json
και εισάγω ένα τμήμα εξαρτήσεων:Όταν κλωνοποιώ το έργο στο τοπικό μου μηχάνημα, τρέχω το
npm install
για να εγκαταστήσω τα πακέτα. Περισσότερες πληροφορίες σχετικά με αυτό εδώ.Το έργο είναι αποθηκευμένο στο GitHub, με απομακρυσμένες προσθήκες για τον διακομιστή παραγωγής μου.
Πολύ αργότερα, βρήκα μια αρκετά καλή ενότητα Node.js για τη διαχείριση των ρυθμίσεων: nconf.
Ένα απλό παράδειγμα:
Υποστηρίζει επίσης την αποθήκευση ρυθμίσεων στο Redis, τη συγγραφή αρχείων ρυθμίσεων, και έχει ένα αρκετά σταθερό API, και υποστηρίζεται επίσης από ένα από τα πιο αξιοσέβαστα καταστήματα Node.js, το Nodejitsu, ως μέρος της πρωτοβουλίας του πλαισίου Flatiron, οπότε θα πρέπει να είναι αρκετά ανθεκτικό στο μέλλον.
Δείτε το nconf στο Github.
Μπορείτε επίσης να κοιτάξετε το node-config το οποίο φορτώνει το αρχείο ρυθμίσεων ανάλογα με τις μεταβλητές $HOST και __$NODE_ENV__ (λίγο σαν το RoR) : documentation.
Αυτό μπορεί να είναι αρκετά χρήσιμο για διαφορετικές ρυθμίσεις ανάπτυξης (
development
,test
ήproduction
).