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 \ne 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.