Comments (9)
I don't see generating a different program as an inherent problem, but @jlongster probably has a better idea of where he wants prettier
to head.
Regarding ES5, you could just make it an option instead of singleQuotes
, have a quotes
option with one of [`backtick`, `single`, `double`]
.
I suppose this tool will only ever support ES6+ due to complexity (if not, do they turn generators into plain functions with switch
statements, etc? leads to ugly code)
from prettier.
We are unlikely going to support this. Closing this in order to clean up the issue list.
from prettier.
Also, this can be achieved with eslint --fix
using the quotes rule.
from prettier.
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).
from prettier.
Syntactically ES5 is a subset of ES2015 (modulo some obscure cases like the interpretation of let[a]
), so if it supports ES2015+ it supports ES5. But I agree that this would be solved by providing it as an option.
I maintain that would be bad, though. Template literals aren't strings: function f(){`use strict`;}
is not a strict function, import `b`;
is not valid syntax, etc.
from prettier.
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 import `b`
is invalid" and similar arguments.
from prettier.
That would generate a different program, even if it's semantically the same.
Also, it would make this project unusable for people writing ES5.
from prettier.
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.
from prettier.
FYI It looks like dprint
is going to support this dprint/dprint-plugin-typescript#345.
from prettier.
Related Issues (20)
- Prettier breaks Markdown alert syntax
- Prettier changes meaning of HTML+JS code when using tags that look like self-closing HOT 3
- Comment in last line of YAML files gets leading newline trimmed HOT 1
- Typescript: Prettier incorrectly breaks up constructor properties from modifiers when there is a decorator and comment before it HOT 1
- [Documentation] Pre-Commit Hook Usage case caveat
- Still the error "Error: Comment "Hello" was not printed. Please report this error!" even though I have added a comment in the Doc. HOT 1
- [JavaScript] Comments between ternary operator formatting result is ugly HOT 2
- Prettier wrong formatting of Angular flow HOT 3
- Markdown undesirable formatting behaviour when new text added to paragraph HOT 2
- Error when file names HOT 4
- Can we have a CLI flag that allows ignoring .gitignore and/or .prettierignore please? HOT 2
- Unstable block comment for implemented interfaces (TypeScript) (moved and non-idempotent)
- Markdown lists with extra indent lead to unstable formatting behavior
- [SCSS] Put unary boolean operator in front of expression when wrapping HOT 3
- Incorrect JavaScript configuration caching behavior
- Omitting a key does not does not work on the Config type
- Bug: functions in MDX are not formatted if there is at least one empty line HOT 2
- cli
- Github Actions for Node.js 14 x MacOS fails HOT 5
- "sanity timeout expired: Interrupted system call" on WSL2.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from prettier.