Edição : Eu fiz um pequeno módulo NPM com este utilitário. Ele funciona na web e no Node e eu recomendo o código na minha resposta abaixo, pois é muito mais robusto. Também permite preservar novas linhas no resultado se você as inserir manualmente como \n
e fornece funções para quando você já usa tags literais de modelo para outra coisa: https://github.com/iansan5653/compress-tag
Sei que estou atrasado para responder aqui, mas a resposta aceita ainda tem a desvantagem de não permitir recuos após a quebra de linha, o que significa que você ainda não pode escrever um código muito bonito apenas escapando de novas linhas.
Em vez disso, por que não usar uma função literal de modelo marcado ?
function noWhiteSpace(strings, ...placeholders) {
// Build the string as normal, combining all the strings and placeholders:
let withSpace = strings.reduce((result, string, i) => (result + placeholders[i - 1] + string));
let withoutSpace = withSpace.replace(/\s\s+/g, ' ');
return withoutSpace;
}
Em seguida, você pode simplesmente marcar qualquer literal de modelo no qual deseja quebras de linha:
let myString = noWhiteSpace`This is a really long string, that needs to wrap over
several lines. With a normal template literal you can't do that, but you can
use a template literal tag to allow line breaks and indents.`;
Isso tem a desvantagem de ter um comportamento inesperado se um desenvolvedor futuro não estiver acostumado à sintaxe do modelo marcado ou se você não usar um nome de função descritivo, mas parecer a solução mais limpa no momento.