# Minificar e juntar CSS, JavaScript e HTML

> Os ficheiros estáticos e as respostas HTML são minificados automaticamente; use MERGE() para servir vários ficheiros como um só e as definições $minify para o desativar.

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

O Total.js minifica o que serve, sem qualquer passo de compilação. Um ficheiro `.css` ou `.js` de `public/` é enviado sem comentários nem espaços em branco (o código não é renomeado nem reestruturado, apenas compactado), e uma string enviada com `$.html()` ou uma vista renderizada perde os comentários HTML e os espaços repetidos são reduzidos. Um ficheiro cujo nome contém `.min.` (como `library.min.js`) é considerado já minificado e é enviado tal como está.

Três definições do ficheiro `config` controlam isto, todas `true` por omissão: `$minifyjs`, `$minifycss` e `$minifyhtml`. Ponha uma a `false` para servir esse tipo sem alterações, o que dá jeito quando depura no navegador.

`MERGE(url, file1, file2, ...)` regista um ficheiro virtual que é a concatenação, minificada, dos ficheiros indicados. O navegador faz um pedido em vez de muitos. Os caminhos dos ficheiros são URLs da pasta `public/`.

```css public/css/app.css
/* the page style */
body {
	margin: 0;
	color: #000000;
}
```

```js public/js/app.js
// greeting
function hello(name) {
	var message = 'Hello ' + name;
	return message;
}
```

```js public/js/library.min.js
function   untouched ( ) { return  1 }
```

```js public/js/two.js
function two() { return 2; }
```

```js controllers/minify.js
exports.install = function() {
	ROUTE('GET /page/', page);
	MERGE('/all.js', '/js/app.js', '/js/two.js');
};

function page($) {
	$.html('<!DOCTYPE html>\n<html>\n  <body>\n    <!-- a note -->\n    <p>  Hello   world  </p>\n  </body>\n</html>');
}
```
