prettier с фиксом для поддержки скобок с новой строки
 
 
 
 
 
 
Go to file
Ivan Babak a7bb71c7e5 fix(perf): convert traverseDoc from recursion to stack (#4776) (#4848)
In addition to a tiny performance improvement outlined below,
the CPU profile of traverseDoc is now more readable.

Also anonymous arrow functions changed to named regular functions
so that they are properly displayed in the CPU profile,
and moved to outer scope where there's no closure
so that they aren't re-created (this change's performance is dependent
on JS engine implementation and optimization details).

Before (profile):
```
7129.9 ms       5.43 %    13349.9 ms     10.18 %    traverseDocRec
7067.4 ms       5.39 %    11285.5 ms      8.60 %      traverseDocRec
  31.5 ms       0.02 %     1031.9 ms      0.79 %      traverseDoc
  23.6 ms       0.02 %    12313.4 ms      9.39 %      traverseDoc
   2.6 ms       0.00 %       0.3 ms       0.00 %      (anonymous)
   1.7 ms       0.00 %       1.7 ms       0.00 %      call
   1.6 ms       0.00 %       1.6 ms       0.00 %      call
   0.5 ms       0.00 %       0.5 ms       0.00 %      conditionalGroup
   0.4 ms       0.00 %       0.4 ms       0.00 %      printDocToString$1
   0.1 ms       0.00 %       0.1 ms       0.00 %      printGenerically
   0.1 ms       0.00 %       0.1 ms       0.00 %      t
   0.1 ms       0.00 %       0.1 ms       0.00 %      ifBreak
   0.1 ms       0.00 %       0.1 ms       0.00 %      (anonymous)
     0 ms          0 %       0.1 ms       0.00 %      forEach

```

After (profile):
```
6937.9 ms       5.37 %    12872.5 ms      9.97 %    traverseDoc
5944.0 ms       4.60 %    11047.3 ms      8.55 %      propagateBreaks
735.7 ms        0.57 %     1358.3 ms      1.05 %      findInDoc
257.9 ms        0.20 %      466.7 ms      0.36 %      findInDoc
0.1 ms          0.00 %        0.1 ms      0.00 %      has
0.1 ms          0.00 %        0.1 ms      0.00 %      printArgumentsList
```

Before (performance):
```
cat ../LspLanguageService.js | NODE_ENV=production node --inspect-brk ./dist/bin-prettier.js --stdin-filepath LspLanguageService.js --loglevel debug --debug-repeat 1000 > /dev/null
Debugger listening on ws://127.0.0.1:9229/4b52c027-ef62-49d6-8770-179e805a0f43
For help see https://nodejs.org/en/docs/inspector
Debugger attached.
[debug] normalized argv: {"color":true,"editorconfig":true,"stdin-filepath":"LspLanguageService.js","loglevel":"debug","debug-repeat":1000,"plugin-search-dir":[],"plugin":[],"ignore-path":".prettierignore","config-precedence":"cli-override","_":[]}
[debug] resolve config from '/Users/ivanbabak/_sompylasar/_github/prettier-2/LspLanguageService.js'
[debug] loaded options `null`
[debug] applied config-precedence (cli-override): {"filepath":"LspLanguageService.js"}
[debug] '--debug-repeat' option found, running formatWithCursor 1000 times.
[debug] '--debug-repeat' measurements for formatWithCursor: {
[debug]   "repeat": 1000,
[debug]   "hz": 7.774598830700336,
[debug]   "ms": 128.624
[debug] }
```

After (performance):
```
cat ../LspLanguageService.js | NODE_ENV=production node --inspect-brk ./dist/bin-prettier.js --stdin-filepath LspLanguageService.js --loglevel debug --debug-repeat 1000 > /dev/null
Debugger listening on ws://127.0.0.1:9229/aa76e134-a68c-44ed-89a8-efb68bc46baa
For help see https://nodejs.org/en/docs/inspector
Debugger attached.
[debug] normalized argv: {"color":true,"editorconfig":true,"stdin-filepath":"LspLanguageService.js","loglevel":"debug","debug-repeat":1000,"plugin-search-dir":[],"plugin":[],"ignore-path":".prettierignore","config-precedence":"cli-override","_":[]}
[debug] resolve config from '/Users/ivanbabak/_sompylasar/_github/prettier/LspLanguageService.js'
[debug] loaded options `null`
[debug] applied config-precedence (cli-override): {"filepath":"LspLanguageService.js"}
[debug] '--debug-repeat' option found, running formatWithCursor 1000 times.
[debug] '--debug-repeat' measurements for formatWithCursor: {
[debug]   "repeat": 1000,
[debug]   "hz": 7.888114977163907,
[debug]   "ms": 126.773
[debug] }
```
2018-07-15 20:02:14 -07:00
.circleci Report test summaries to CircleCI (#4704) 2018-07-07 12:11:04 -04:00
.github Lock closed issues and PRs after 3 months of inactivity (#4802) 2018-07-05 20:59:34 +03:00
bin refactor(cli): separate files and make it pure as possible (#2730) 2017-09-03 19:21:06 +10:00
docs Add stylelint-prettier to related projects (#4839) 2018-07-15 11:06:16 +08:00
scripts Report test summaries to CircleCI (#4704) 2018-07-07 12:11:04 -04:00
src fix(perf): convert traverseDoc from recursion to stack (#4776) (#4848) 2018-07-15 20:02:14 -07:00
tests Blacklist this in functional composition heuristics (#4836) 2018-07-12 11:58:57 -03:00
tests_config Upgrade to Jest 23 (#4809) 2018-07-04 16:54:39 -03:00
tests_integration feat(json): add jsonc to aliases and use it to find parser in markdown embed (#4734) 2018-07-07 20:46:34 +08:00
website Added Unibeautify (#4834) 2018-07-11 09:45:19 -07:00
.appveyor.yml Get tests passing on Windows (#4579) 2018-05-28 21:46:55 +10:00
.codecov.yml Improve coverage and remove some dead code (#2504) 2017-07-17 23:31:42 +10:00
.eslintignore Introduce Release script (#4631) 2018-06-05 16:37:52 -03:00
.eslintrc.yml lint fixes 2018-04-17 18:09:36 -03:00
.flowconfig Build the dist/ with rollup (#1794) 2017-05-28 21:49:41 -07:00
.gitignore Report test summaries to CircleCI (#4704) 2018-07-07 12:11:04 -04:00
.ignore Remove .npmignore and update .ignore (#2560) 2017-07-31 08:47:00 +10:00
.pre-commit-hooks.yaml Add support for markdown with pre-commit (#4021) 2018-02-21 12:10:25 -05:00
.prettierignore Implement getSupportInfo() and use it for inference (#3033) 2017-11-03 18:06:25 +11:00
.travis.yml Travis - Allow failures in Node 6 (#4690) 2018-06-14 09:55:31 -03:00
.yarnrc Add .yarnrc to use exact versions (#2016) 2017-06-06 18:04:52 -07:00
CHANGELOG.md Release 1.13.7 2018-06-28 16:26:15 -03:00
CONTRIBUTING.md Format docs with Prettier 1.13 2018-05-27 15:38:31 -03:00
LICENSE Happy new year 2018! (#3620) 2018-01-01 00:41:21 +01:00
README.md Update AppVeyor badge to organization (#4828) 2018-07-11 01:12:27 +10:00
commands.md Format docs with Prettier 1.13 2018-05-27 15:38:31 -03:00
index.js Don't default parser to babylon (#4528) 2018-05-23 16:55:06 -03:00
jest.config.js Report test summaries to CircleCI (#4704) 2018-07-07 12:11:04 -04:00
package.json refactor(typescript): remove unnecessary experimental types (#4819) 2018-07-10 10:05:31 +08:00
standalone.js feat: support YAML (#4563) 2018-06-21 10:29:42 +08:00
yarn.lock refactor(typescript): remove unnecessary experimental types (#4819) 2018-07-10 10:05:31 +08:00

README.md

Prettier Banner

Opinionated Code Formatter

JavaScript · Flow · TypeScript · CSS · SCSS · Less · JSX · Vue · GraphQL · JSON · Markdown · YAML · Your favorite language?

Travis CI Build Status CircleCI Build Status AppVeyor Build Status Codecov Coverage Status Blazing Fast
npm version monthly downloads from npm code style: prettier Chat on Gitter Follow Prettier on Twitter

Intro

Prettier is an opinionated code formatter. It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary.

Input

foo(reallyLongArg(), omgSoManyParameters(), IShouldRefactorThis(), isThereSeriouslyAnotherOne());

Output

foo(
  reallyLongArg(),
  omgSoManyParameters(),
  IShouldRefactorThis(),
  isThereSeriouslyAnotherOne()
);

Prettier can be run in your editor on-save, in a pre-commit hook, or in CI environments to ensure your codebase has a consistent style without devs ever having to post a nit-picky comment on a code review ever again!


Documentation

Install · Options · CLI · API

Playground


Badge

Show the world you're using Prettiercode style: prettier

[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)

Contributing

See CONTRIBUTING.md.