Con il crescere della complessità dell'applicazione, delle componenti (database e moduli vari) e dei diversi ambienti (sviluppo, produzione, staging, etc. etc.), può essere comodo utilizzare un modulo che agevoli nella impostazione di config, delle sue variabili e dei diversi valori che devono avere.
Una ricerca della keyword "config" su npmjs.org , il repository dei moduli per nodejs, produce centinaia di risultati (o più precisamente 5 pagine da 100 risultati circa ognuna, anche se non tutti si riferiscono alla generica configurazione di nodejs, ma ad aspetti o funzionalità specifiche).
Tra questi si possono selezionare i seguenti:
Ma quale scegliere? (spoiler: propongo convict)
I numeri su github
Un pò di numeri su github riassunti in una tabella:| nconf | node-convict | rc | konphyg | figc | |
|---|---|---|---|---|---|
| contributors |
25
| 12 | 11 | 5 | 1 |
| stars | 1343 | 194 | 195 | 90 | 11 |
| fork | 92 | 22 | 24 | 11 | 2 |
| nconf | convict | rc | konphyg | figc | |
|---|---|---|---|---|---|
| downloads in the last month |
194k
| 7k | 532k | 1k | 0.5k |
| last updated | a year ago | 14 days ago | 9 days ago | 8 months ago | 2 years ago |
| Version | 0.6.9 | 0.5.1 | 0.5.4 | 1.4.0 | 0.0.3 |
Ad una prima occhiata il vincente sembrerebbe essere nconf.
Ma sono solo indicatori, perché la scelta di un modulo piuttosto che un'altro si basa sulle proprie esigenze e come vengono soddisfatte.
Comunque i contendenti sui quali puntare potrebbero essere principalmente due: nconf e convict
Gli autori: Mozilla vs Nodejitsu
Anche se abbiamo visto dai numeri di github che nconf ha 25 contributors, il programmatore di riferimento è il NewYorkese Charlie Robbins alias indexzero di Nodejitsu.L'autore di convict è invece la comunità di sviluppatori di Mozilla, sicuramente una garanzia di qualità.
Bisogna considerare che dietro nconf c'è Flatiron, un framework per costruire applicazioni con Node.js e forse per questo si spiegano numeri più alti di quelli fatti dal modulo di Mozilla.
E' comunque simpatico notare che sul blog di nodejitsu c'e' un post di Marzo 2014 sul suo concorrente convict.
Alcune caratteristiche
Validation
Un file di configurazione sbagliato significa un sito che non funziona, per cui è comodo che i parametri possano essere controllati automaticamente da un validatore.convict ha nativamente questa funzione, per nconf c'è comunque il plug-in nconf-validator
Coercion
Convict forza le variabili al loro formato richiesto, per esempio nel caso di numeri passati come stringhe.Chiarezza contro complessita'
Le configurazioni impostate con convict sembrano essere piu' chiare e leggibili rispetto a quelle di nconf. Anche se nconf ha le funzioni di impostazione separate ed utilizzabili liberamente, la rigidita' di convict in realta' rende la configurazione molto piu' chiara e piu' leggibile, e per questo piu' solida e meno soggetta a pasticci e conseguentemente bug: e quando si trasferiscono gli aggiornamenti dagli ambienti di sviluppo a quelli di test e poi in produzione, l'ultima cosa che si desidera e' quella di perdere tempo a capire perche' un deploy che funziona nell'ambiente di test non funziona invece nell'ambiente di produzione, le cui differenze dovrebbero essere chiare nel file di configurazione.Alcuni articoli utili sul tema
- 12 Mar 2014 Managing app configuration with convict
- 5 Mar 2013 hacks.mozilla.org: Taming Configurations with node-convict – A Node.JS Holiday Season
- 21 Sep 2011 Configuration Files in Node.js Made Easy With Konphyg
Nessun commento:
Posta un commento