# Köra i debug- och releaseläge

> Alternativen i Total.run() väljer mellan debug- och releaseläge; läs läget från DEBUG och begränsa rutter till ett läge med @debug och @release.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: sv
Content-SHA256: 54ac4aaefd20a9394177093320e1e23dc8b38d8936ff18c653175eb07ded3766
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

Total.js körs i ett av två lägen, **debug** för utveckling och **release** för servern, och den globala boolean `DEBUG` talar om för din kod vilket som är aktivt. I debugläge körs applikationen under en filbevakare (watcher) som startar om den när du ändrar en fil, fel visar detaljer och source maps genereras. Releaseläget har ingen watcher och felsidorna visar inga tekniska detaljer.

Läget bestäms av hur applikationen startas, i startskriptet (`index.js`) som anropar `Total.run(options)`:

- standard är debug, med watchern;
- `options.release = true` startar releaseläge; startskriptet som Total.js genererar sätter det från kommandoraden, så `node index.js --release` är sättet att starta produktion;
- `options.watcher = false` kör en enda process utan watcher, och det är alltid releaseläge (det är vad exemplen i den här receptsamlingen använder).

Innan `Total.run()` har bestämt har `DEBUG` ett standardvärde från `NODE_ENV`: det är `false` när `NODE_ENV=production` och annars `true`. Kod som körs när en modul laddas ser det standardvärdet, så lita inte på `NODE_ENV` för det slutliga läget, utan bara på `DEBUG` efter att applikationen har startat.

Rutterna kan följa läget. Flaggan `@debug` gör att en rutt bara finns i debugläge och `@release` bara i releaseläge; i det andra läget svarar URL:en med 404. Använd `@debug` för verktyg du behöver under utvecklingen (en databasvisare, en rutt med testdata) så att de aldrig av misstag når produktion.

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