# Minifica y combina CSS, JavaScript y HTML

> Los archivos estáticos y las respuestas HTML se minifican automáticamente; usa MERGE() para servir varios archivos como uno y los ajustes $minify para desactivarlo.

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

Total.js minifica lo que sirve sin ningún paso de compilación. Un archivo `.css` o `.js` de `public/` se envía sin comentarios ni espacios en blanco (el código no se renombra ni se reestructura, solo se compacta), y una cadena enviada con `$.html()` o una vista renderizada pierde sus comentarios HTML y colapsa los espacios repetidos. Un archivo cuyo nombre contiene `.min.` (como `library.min.js`) se considera ya minificado y se envía tal cual.

Tres ajustes del archivo `config` lo controlan, todos en `true` por defecto: `$minifyjs`, `$minifycss` y `$minifyhtml`. Pon uno en `false` para servir ese tipo sin tocar, lo que resulta útil cuando depuras en el navegador.

`MERGE(url, file1, file2, ...)` registra un archivo virtual que es la concatenación, minificada, de los archivos indicados. El navegador hace una petición en lugar de muchas. Las rutas de archivo son URLs de la carpeta `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>');
}
```
