EDIT : J'ai fait un petit module NPM avec cet utilitaire. Cela fonctionne sur le Web et dans Node et je le recommande vivement sur le code de ma réponse ci-dessous car il est beaucoup plus robuste. Il permet également de conserver les nouvelles lignes dans le résultat si vous les saisissez manuellement comme\n
, et fournit des fonctions lorsque vous utilisez déjà des balises littérales de modèle pour autre chose: https://github.com/iansan5653/compress-tag
Je sais que je suis en retard pour répondre ici, mais la réponse acceptée a toujours l'inconvénient de ne pas autoriser les retraits après le saut de ligne, ce qui signifie que vous ne pouvez toujours pas écrire du code très beau simplement en échappant aux nouvelles lignes.
Au lieu de cela, pourquoi ne pas utiliser une fonction littérale de modèle étiqueté ?
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;
}
Ensuite, vous pouvez simplement marquer n'importe quel littéral de modèle dans lequel vous souhaitez avoir des sauts de ligne:
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.`;
Cela présente l'inconvénient d'avoir un comportement inattendu si un futur développeur n'est pas habitué à la syntaxe du modèle étiqueté ou si vous n'utilisez pas de nom de fonction descriptif, mais cela semble être la solution la plus propre pour le moment.