New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Default to template literal strings #54
Comments
That would generate a different program, even if it's semantically the same. Also, it would make this project unusable for people writing ES5. |
I don't see generating a different program as an inherent problem, but @jlongster probably has a better idea of where he wants Regarding ES5, you could just make it an option instead of I suppose this tool will only ever support ES6+ due to complexity (if not, do they turn generators into plain functions with |
Syntactically ES5 is a subset of ES2015 (modulo some obscure cases like the interpretation of I maintain that would be bad, though. Template literals aren't strings: |
That's never a problem in actual programs, particularly if you're running build tools like this one, that can and will shout at you for writing incorrect programs. In practice, using template literals by default means you can smoothly add interpolated expressions, something that is a hassle if you're defaulting to single or double quoted strings because of all the back and forth (remove quotes, add backticks, add interpolation, repeat in reverse if you remove all interpolations, etc). Plus if you're already using template literals in some places, then defaulting to them is no different than using one, in terms of "but |
IMO, this doesn't belong in Prettier. Changes like these will modify the AST, and they probably should be done in a separate step or as part of a Babel plugin or JS codemod, instead of in Prettier which is simply a JavaScript formatter which aims to pretty-print the current AST. |
The good thing is that if you write with template literal strings, we will output template literal strings. This formatter is not so opinionated that is overwrites everything into a single authoritative style. It never converts AST nodes into different types, etc. I don't know exactly where this will head, but I do know that I want to take it slowly. I think it would be surprising to a lot of people if they typed double-quotes and they were automatically converted into a template literal. For now, I'd prefer to keep whatever the original string type was. (We do force either double or single quotes, naturally, because those compile to the same AST node type so the user can choose what to output because it's ambiguous what we should do.) If there are any problems with template literals, let me know. Simply having the formatter is probably divisive enough so I don't want to make it any more opinionated than it has to be. I think things like this could be aided by other tools. I'm open to making it easier to integrate with other tools that can transform the AST (i.e. pass the AST elsewhere, maybe babel plugins). |
We are unlikely going to support this. Closing this in order to clean up the issue list. |
Also, this can be achieved with |
FYI It looks like |
This would probably be a controversial decision but template literal strings are just better. No escaping, easy interpolation, multiline when needed, etc.
This article by @bevacqua introduced me to the idea https://ponyfoo.com/articles/template-literals-strictly-better-strings and I've been using straight template literal strings in Gatsby for the past month or so with great success. Can't imagine going back to the morass of single vs. double quotes now.
The text was updated successfully, but these errors were encountered: