ForgeTotal.js 5
fr

Total.js 5

Exécuter en mode debug et en mode release

Total.js 5 · total5@0.0.19 deploymentdebugreleaseenvironment Exécutée avec Total.js 5

Total.js fonctionne dans l'un de deux modes, debug pour le développement et release pour le serveur, et le booléen global DEBUG indique à votre code lequel est actif. En mode debug, l'application s'exécute sous un watcher de fichiers qui la redémarre quand vous modifiez un fichier, les erreurs affichent des détails et des source maps sont générées. Le mode release n'a pas de watcher et ses pages d'erreur ne montrent pas les détails techniques.

Le mode est choisi par la façon dont l'application est démarrée, dans le script de démarrage (index.js) qui appelle Total.run(options) :

  • par défaut, c'est debug, avec le watcher ;
  • options.release = true démarre le mode release ; le script de démarrage généré par Total.js l'active depuis la ligne de commande, donc node index.js --release est la façon de démarrer la production ;
  • options.watcher = false exécute un seul processus sans watcher, et c'est toujours le mode release (c'est ce qu'utilisent les exemples de ce livre de recettes).

Avant que Total.run() ait décidé, DEBUG a une valeur par défaut tirée de NODE_ENV : elle vaut false quand NODE_ENV=production et true sinon. Le code qui s'exécute au moment du chargement d'un module voit cette valeur par défaut ; ne vous fiez donc pas à NODE_ENV pour le mode final, seulement à DEBUG une fois l'application démarrée.

Les routes peuvent suivre le mode. Le flag @debug fait exister une route uniquement en mode debug et @release uniquement en mode release ; dans l'autre mode, l'URL répond 404. Utilisez @debug pour les outils dont vous avez besoin pendant le développement (un visualiseur de base de données, une route de données de test) afin qu'ils n'arrivent jamais en production par accident.

controllers/mode.js
exports.install = function() {
	ROUTE('GET /mode/', mode);
	ROUTE('GET /tools/ @debug', tools);
	ROUTE('GET /status/ @release', status);
};

function mode($) {
	$.json({ debug: DEBUG });
}

function tools($) {
	$.json({ tools: true });
}

function status($) {
	$.json({ status: 'ok' });
}