# Работа в режим debug и release

> Опциите на Total.run() избират между режим debug и release; прочетете режима от DEBUG и ограничете маршрути до един режим с @debug и @release.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: bg
Content-SHA256: 9c63ab1c286070706b7d11fbfd5e9646f95cb14c4a935113624c92d0445d7e46
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

Total.js работи в един от два режима, **debug** за разработка и **release** за сървъра, а глобалната булева стойност `DEBUG` казва на вашия код кой е активен. В режим debug приложението работи под наблюдател на файлове (watcher), който го рестартира, когато промените файл, грешките показват подробности и се генерират source maps. Режим release няма watcher, а страниците за грешки не показват техническите подробности.

Режимът се определя от начина, по който се стартира приложението, в стартовия скрипт (`index.js`), който извиква `Total.run(options)`:

- по подразбиране е debug, с watcher;
- `options.release = true` стартира режим release; стартовият скрипт, който Total.js генерира, го задава от командния ред, така че `node index.js --release` е начинът да стартирате продукцията;
- `options.watcher = false` изпълнява един процес без watcher и това винаги е режим release (това използват примерите на този сборник с рецепти).

Преди `Total.run()` да реши, `DEBUG` има стойност по подразбиране от `NODE_ENV`: тя е `false`, когато `NODE_ENV=production`, и `true` в останалите случаи. Кодът, който се изпълнява в момента на зареждане на модул, вижда тази стойност по подразбиране, затова не разчитайте на `NODE_ENV` за крайния режим, а само на `DEBUG` след като приложението е стартирало.

Маршрутите могат да следват режима. Флагът `@debug` кара маршрут да съществува само в режим debug, а `@release` само в режим release; в другия режим URL отговаря с 404. Използвайте `@debug` за инструменти, които ви трябват по време на разработка (преглед на базата данни, маршрут с тестови данни), за да не стигнат никога по погрешка до продукцията.

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