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)
- `pre-commit` mirror continued support for version 3 after `v3.1.0` HOT 3
- Number list confusion with heading after bullet list
- Preserve HTML attribute wrapping like the default formatter "html.format.wrapAttributes": "preserve"
- Typescript regression in handling functions with generic types and method chaingin in 3.2.0 compared to 3.1.0 HOT 1
- Second format failed when running next lint. Rule: "prettier/prettier" HOT 2
- Extension 'Prettier - Code formatter' is configured as formatter but it cannot format 'Svelte'-files HOT 1
- Markdown Parser double spaces lists with code that has spaces
- TypeError: join(...).filter is not a function
- TypeError: prettierApi.getFileInfo.sync is not a function
- TypeError: prettierApi.getFileInfo.sync is not a function HOT 1
- Same configurations but different document format display HOT 1
- Formatting of embedded equations in Markdown is sometimes incorrectly escaping underscores
- Formatting can break `/*#__PURE__*/` annotations HOT 1
- Issues with prettier-vscode not working properly with plugins since prettier 3.1.0 release HOT 8
- JSX empty lines are removed
- File names with dollar sign ($) in the name cannot be processed by Prettier
- Typescript 5 const modifier on type parameters leads to SyntaxError HOT 1
- Simple template literal should break at all interpolations instead of exceeding the max line width HOT 6
- ENAMETOOLONG error when running prettier HOT 1
- [Feature Request] Add support for TS config files (`prettier.config.ts`) HOT 1
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.