7

Ho alcuni modelli per il mio codice frontend, come:come utilizzare un minifier HTML con i modelli di sottolineatura

<div class="row"> 
    <div class="my-header col-md-1"> 
     <!-- comments --> 
     {{ title }} 
    </div> 
    <div class="my-container col-md-11"> 
    {% if (content) { %} 
     {{ content }} 
    {% } else { %} 
     <p>Empty</p> 
    {% } %} 
    </div> 
</div> 

e sto usando grunt-contrib-jst per memorizzare tutti in un unico file e poi su un altro passaggio di generazione sarà incluso in un singolo file JS e tale file verrà trasferito al CDN. Questa parte funziona perfettamente, ma desidero utilizzare l'opzione processContent per minimizzare il codice del modello HTML, che contiene i delimitatori del modello Undercore (<%...%> sostituito con {% ... %}, <%= ... %> sostituito con {{ ... }}).

Volevo utilizzare html-minifier ma in realtà non riduce a icona nulla, apparentemente perché tenta di analizzare il modello come solo HTML (e non riesce a causa dei tag di modello).

Esiste un pacchetto/funzione Node che mi permetta di minimizzare questo tipo di modelli? Vorrei utilizzare commenti e spazi bianchi nei modelli di origine, ma rimuovere tutto il necessario sul file di build risultante.

In questo momento ho questo sul mio impostazioni JST:

processContent: function (content) { 
    return content 
     .replace(/^[\x20\t]+/mg, '') 
     .replace(/[\x20\t]+$/mg, '') 
     .replace(/^[\r\n]+/, '') 
     .replace(/[\r\n]*$/, '\n'); 
}, 
... 

ma voglio minimizzare tutto il possibile, è per questo che ho provato con html-minifier.

Grazie!

+0

hai mai trovato una risposta? Ho lo stesso problema in cui la mia dimensione JST potrebbe essere significativamente ridotta. –

+0

@JoshWLewis scusate, non ancora fortuna :(Apparentemente questo tipo di minimizzatore deve essere a conoscenza dei tag Underscore e minimizzare tutto al di fuori di questi tag. –

risposta

3

Non posso davvero aiutare a ridurre al minimo i delimitatori del modello di sottolineatura, ma sto ancora cercando di scoprire il modo migliore per farlo da solo, ma potresti prendere in considerazione l'esecuzione dei modelli tramite htmlclean. Lo uso con r.js e funziona molto bene per rimuovere le nuove linee e gli spazi nel codice. Esempio di utilizzo:

var htmlclean = require('htmlclean'); 

// ... 
processContent: function (content) { 
    return htmlclean(content) 
     .replace(/^[\x20\t]+/mg, '') 
     .replace(/[\x20\t]+$/mg, '') 
     .replace(/^[\r\n]+/, '') 
     .replace(/[\r\n]*$/, '\n'); 
}, 

Non ho avuto problemi con l'utilizzo di questo in HTML che ha i modelli di sottolineatura in là. Spero che ti aiuti.

+0

Grazie, ci provo :) –