4 ms·
I feel like Prettier does a really good job with JavaScript. What situations have you found where automated formatting doesn’t suffice or has these limits?
by jeremy_wiebe 8y ago
I feel like Prettier does a really good job with JavaScript.
What situations have you found where automated formatting doesn’t suffice or has these limits?
- paulddraper 8y agoOrdering code. Some tools order/deduplicate imports. Prettier does not. [1] And no tool that I've seen orders fields/constructor/method, etc. [1] https://github.com/prettier/prettier/issues/949 https://github.com/prettier/prettier/issues/949
- jeremy_wiebe 8y agoInteresting, yeah, that’s definitely missing. ESLint has rules for ordering, feels like it’d be a relatively simple addition to prettier.
- eropple 8y agoIn JavaScript, imports sometimes (too often, really) have side effects. I don't know if it makes sense for prettier to do that, at least by default.
- paulddraper 8y agoIn my experience, side-effecting imports are fairly uncommon. But in any cases, all formatters allow you to selectively disable it for certain liners.
- dvlsg 8y agoHopefully uncommon, anyways. Imports with side effects sounds like a nightmare to debug.
- michaelmior 8y agoI don't have a problem with anything that discourages imports with side effects. You can always ignore[0] any cases where this happens. [0] https://prettier.io/docs/en/ignore.html https://prettier.io/docs/en/ignore.html
- chrisweekly 8y agoeslint and prettier are not mutually exclusive
- jeremy_wiebe 8y agoI didn’t mean to imply that. In fact we use eslint + prettier where I work.
- paulddraper 8y ago> it’d be a relatively simple addition to prettier. It would be, but as you can see in the linked issue, it was closed for being a non-goal. So, it's not likely to change. (Prettier generally keeps the AST identical; i.e. whitespace and parentheses changes only.)
- eberkund 8y agoI don't know if it supports JavaScript but Resharper does this for .Net
- reitanqild 8y agoI think all three major Java IDEs do this as well.
- edflsafoiewq 8y agoHumans format with rules that take into account semantic information, symmetry, and aesthetics. They know that a function call that gives the entries of a matrix is formatted as a grid for a reason even when the auto-formatter could fit it on one line. They know that that arm of the match that would be formatted weird if it were on its own is actually formatted well because it exhibits that case's consistency with the other cases in the match. Probably the most important formatting decision they make is to, rather than format a long line, break it into intermediate results and store them in local variables given human-meaningful names.