EDYCJA : stworzyłem mały moduł NPM za pomocą tego narzędzia. Działa w sieci i w Node i bardzo polecam go nad kodem w mojej poniższej odpowiedzi, ponieważ jest znacznie bardziej niezawodny. Pozwala również na zachowanie nowych linii w wyniku, jeśli ręcznie wprowadzisz je jako \n
, i zapewnia funkcje, gdy używasz już tagów literału szablonu do czegoś innego: https://github.com/iansan5653/compress-tag
Wiem, że spóźniłem się na odpowiedź, ale zaakceptowana odpowiedź nadal ma tę wadę, że nie zezwala na wcięcia po podziale wiersza, co oznacza, że nadal nie można napisać bardzo ładnie wyglądającego kodu, po prostu unikając nowych linii.
Zamiast tego, dlaczego nie użyć funkcji literału z tagiem szablonu ?
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;
}
Następnie możesz po prostu otagować dowolny literał szablonu, w którym chcesz wprowadzić podziały wierszy:
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.`;
Ma to tę wadę, że może mieć nieoczekiwane zachowanie, jeśli przyszły programista nie jest przyzwyczajony do składni otagowanego szablonu lub jeśli nie używasz opisowej nazwy funkcji, ale wydaje się, że na razie jest to najczystsze rozwiązanie.