ForgeTotal.js 5
es

Total.js 5

Ejecuta en modo debug y en modo release

Total.js 5 · total5@0.0.19 deploymentdebugreleaseenvironment Ejecutada con Total.js 5

Total.js funciona en uno de dos modos, debug para desarrollar y release para el servidor, y el booleano global DEBUG le dice a tu código cuál está activo. En modo debug la aplicación se ejecuta bajo un watcher que la reinicia cuando cambias un archivo, los errores muestran detalles y se generan source maps. El modo release no tiene watcher y las páginas de error no muestran los detalles técnicos.

El modo lo decide cómo se arranca la aplicación, en el script de arranque (index.js) que llama a Total.run(options):

  • por defecto es debug, con el watcher;
  • options.release = true arranca el modo release; el script de arranque que genera Total.js lo activa desde la línea de comandos, así que node index.js --release es la forma de arrancar producción;
  • options.watcher = false ejecuta un único proceso sin watcher, y eso es siempre modo release (es lo que usan los ejemplos de este recetario).

Antes de que Total.run() lo haya decidido, DEBUG tiene un valor por defecto tomado de NODE_ENV: es false cuando NODE_ENV=production y true en cualquier otro caso. El código que se ejecuta en el momento de cargar un módulo ve ese valor por defecto, así que no confíes en NODE_ENV para el modo final, solo en DEBUG una vez arrancada la aplicación.

Las rutas pueden seguir el modo. El flag @debug hace que una ruta exista solo en modo debug y @release solo en modo release; en el otro modo la URL responde 404. Usa @debug para las herramientas que necesitas mientras desarrollas (un visor de base de datos, una ruta de datos de prueba) y así nunca llegarán a producción por accidente.

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' });
}