ForgeTotal.js 5
pt

Total.js 5

Executar em modo debug e em modo release

Total.js 5 · total5@0.0.19 deploymentdebugreleaseenvironment Executada com o Total.js 5

O Total.js funciona num de dois modos, debug para desenvolver e release para o servidor, e o booleano global DEBUG diz ao seu código qual está ativo. No modo debug a aplicação corre sob um watcher que a reinicia quando altera um ficheiro, os erros mostram detalhes e são geradas source maps. O modo release não tem watcher e as páginas de erro não mostram os detalhes técnicos.

O modo é escolhido pela forma como a aplicação é iniciada, no script de arranque (index.js) que chama Total.run(options):

  • por omissão é debug, com o watcher;
  • options.release = true inicia o modo release; o script de arranque que o Total.js gera ativa-o a partir da linha de comandos, por isso node index.js --release é a forma de arrancar a produção;
  • options.watcher = false executa um único processo sem watcher, e isso é sempre o modo release (é o que usam os exemplos deste livro de receitas).

Antes de Total.run() ter decidido, DEBUG tem um valor por omissão vindo de NODE_ENV: é false quando NODE_ENV=production e true caso contrário. O código que corre no momento em que um módulo é carregado vê esse valor por omissão, por isso não confie em NODE_ENV para o modo final, apenas em DEBUG depois de a aplicação ter arrancado.

As rotas podem seguir o modo. A flag @debug faz com que uma rota exista só no modo debug e @release só no modo release; no outro modo o URL responde 404. Use @debug para as ferramentas de que precisa durante o desenvolvimento (um visualizador de base de dados, uma rota de dados de teste), para que nunca cheguem à produção por acidente.

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