EDITAR : He creado un pequeño módulo NPM con esta utilidad. Funciona en la web y en Node y lo recomiendo ampliamente sobre el código en mi respuesta a continuación, ya que es mucho más robusto. También permite preservar nuevas líneas en el resultado si las ingresa manualmente como \n
, y proporciona funciones para cuando ya usa etiquetas literales de plantilla para otra cosa: https://github.com/iansan5653/compress-tag
Sé que llego tarde para responder aquí, pero la respuesta aceptada todavía tiene el inconveniente de no permitir sangrías después del salto de línea, lo que significa que aún no puede escribir código de aspecto agradable simplemente escapando de las nuevas líneas.
En cambio, ¿por qué no usar una función literal de plantilla etiquetada ?
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;
}
Luego puede etiquetar cualquier plantilla literal en la que desee tener saltos de línea:
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.`;
Esto tiene el inconveniente de posiblemente tener un comportamiento inesperado si un futuro desarrollador no está acostumbrado a la sintaxis de la plantilla etiquetada o si no usa un nombre de función descriptivo, pero por ahora parece ser la solución más limpia.