@moomfe/hu-template-minifier
Version:
该类库将使用了 [模板字符串 - 标签 ( Template literals )](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#Tagged_templates) 功能实现模板定义的类库中的 HTML 代码进行压缩.
34 lines (27 loc) • 1.13 kB
JavaScript
require('@moomfe/zenjs');
const MagicString = require('magic-string');
const getLiterals = require('./util/getLiterals.js');
const getPlaceholder = require('./util/getPlaceholder.js');
const minifierHTML = require('./util/minifierHTML.js');
const processCode = require('./util/processCode.js');
module.exports = function minifier( userCode = '', id = '', userOptions ){
const options = Object.$assign( null, userOptions );
const code = processCode( userCode, id, options );
const literals = getLiterals( code, id );
if( literals.length ){
const msCode = new MagicString( code );
literals.forEach( literal => {
const placeholder = getPlaceholder( literal.parts );
const combined = literal.parts.map( part => part.text ).join( placeholder );
const min = minifierHTML( combined, options );
const minParts = min.split( placeholder );
literal.parts.forEach(({ start, end }, index) => {
if( end > start ){
msCode.overwrite( start, end, minParts[ index ] );
}
});
});
return msCode.toString();
}
return code;
}