Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/prettier/prettier-eslint-cli

CLI for prettier-eslint
https://github.com/prettier/prettier-eslint-cli

cli eslint formatter hacktoberfest javascript prettier

Last synced: about 1 month ago
JSON representation

CLI for prettier-eslint

Awesome Lists containing this project

README

        

# prettier-eslint-cli

CLI for [`prettier-eslint`][prettier-eslint]

[![Build Status][build-badge]][build]
[![Code Coverage][coverage-badge]][coverage]
[![version][version-badge]][package]
[![downloads][downloads-badge]][npm-stat]
[![MIT License][license-badge]][license]
[![changesets](https://img.shields.io/badge/maintained%20with-changesets-176de3.svg?style=flat-square)](https://github.com/atlassian/changesets)

[![Open Collective backers and sponsors](https://img.shields.io/opencollective/all/prettier?style=flat-square)](https://opencollective.com/prettier)
[![All Contributors](https://img.shields.io/badge/all_contributors-21-orange.svg?style=flat-square)](#contributors)
[![PRs Welcome][prs-badge]][prs]
[![Donate][donate-badge]][donate]
[![Code of Conduct][coc-badge]][coc]
[![Roadmap][roadmap-badge]][roadmap]
[![Examples][examples-badge]][examples]

[![Watch on GitHub][github-watch-badge]][github-watch]
[![Star on GitHub][github-star-badge]][github-star]
[![Tweet][twitter-badge]][twitter]

## The problem

You have a bunch of files that you want to format using [`prettier-eslint`][prettier-eslint].
But `prettier-eslint` can only operate on strings.

## This solution

This is a [CLI](https://en.wikipedia.org/wiki/Command-line_interface) that allows you to use
`prettier-eslint` on one or multiple files. `prettier-eslint-cli` forwards on the `filePath`
and other relevant options to `prettier-eslint` which identifies the applicable `ESLint`
config for each file and uses that to determine the options for `prettier` and `eslint --fix`.

## Installation

This module is distributed via [npm][npm] which is bundled with [node][node] and should
be installed (with [`yarn`][yarn]) as one of your project's `devDependencies`:

```
yarn add --dev prettier-eslint-cli
```

> If you're still using the [`npm`][npm] client: `npm install --save-dev prettier-eslint-cli`

## Usage

Typically you'll use this in your [npm scripts][npm scripts] (or [package scripts][package scripts]):

```json
{
"scripts": {
"format": "prettier-eslint \"src/**/*.js\""
}
}
```

This will format all `.js` files in the `src` directory. The argument you pass to the CLI
is a [glob][glob] and you can pass as many as you wish. You can also pass options.

### Vim

Vim users can add the following to their .vimrc:

```
autocmd FileType javascript set formatprg=prettier-eslint\ --stdin
```

This makes prettier-eslint-cli power the gq command for automatic formatting without any plugins. You can also add the following to your .vimrc to run prettier-eslint-cli when .js files are saved:

```
autocmd BufWritePre *.js :normal gggqG
```

### CLI Options

```
prettier-eslint --help
Usage: prettier-eslint ... [--option-1 option-1-value --option-2]

Prefix an option with "no-" to set it to false, such as --no-semi to
disable semicolons and --no-eslint-ignore to disable default ignores.

Options:
-h, --help Show help [boolean]
--version Show version number [boolean]
--write Edit the file in-place (beware!)
[boolean] [default: false]
--stdin Read input via stdin [boolean] [default: false]
--stdin-filepath Path to the file to pretend that stdin comes from.
--eslint-ignore Only format matching files even if they are not
ignored by .eslintignore. (can use --no-eslint-ignore
to disable this) [boolean] [default: true]
--prettier-ignore Only format matching files even if they are not
ignored by .prettierignore. (can use
--no-prettier-ignore to disable this)
[boolean] [default: true]
--list-different Print filenames of files that are different from
Prettier + Eslint formatting.
[boolean] [default: false]
--include-dot-files Include files that start with a dot in the search.
[boolean] [default: false]
--eslint-path The path to the eslint module to use
[default: "./node_modules/eslint"]
--eslint-config-path Path to the eslint config to use for eslint --fix
--prettier-path The path to the prettier module to use [default: "./node_modules/prettier"]
--config Path to the prettier config
--ignore pattern(s) you wish to ignore (can be used multiple
times and includes **/node_modules/** automatically)
--log-level, -l The log level to use
[choices: "silent", "error", "warn", "info", "debug", "trace"] [default:
"warn"]
--prettier-last Run prettier last [boolean] [default: false]
--use-tabs Indent lines with tabs instead of spaces. [boolean]
--print-width Specify the length of line that the printer will wrap
on. [number]
--tab-width Specify the number of spaces per indentation-level.
[number]
--trailing-comma Print trailing commas wherever possible.

Valid options:
- "none" - no trailing commas
- "es5" - trailing commas where valid in ES5
(objects, arrays, etc)
- "all" - trailing commas wherever possible (function
arguments) [string] [choices: "none", "es5", "all"]
--bracket-spacing Print spaces between brackets in object literals.
Can use --no-bracket-spacing for "false" to disable
it.

Valid options:
- true - Example: { foo: bar }
- false - Example: {foo: bar} [boolean]
--jsx-bracket-same-line Put the > of a multi-line JSX element at the end of
the last line instead of being alone on the next line
[boolean]
--parser Specify which parser to use. [string]
--semi Print semicolons at the ends of statements.
Can use --no-semi.

Valid options:
- true - add a semicolon at the end of every
statement
- false - only add semicolons at the beginning of
lines that may introduce ASI failures [boolean]
--single-quote Use single quotes instead of double quotes. [boolean]
```

####

Any number of [globs][glob] you wish to use to match the files you wish to format. By default, `glob` will ignore
`**/node_modules/**` unless the glob you provide
includes the string `node_modules`.

#### --write

By default `prettier-eslint` will simply log the formatted version to the terminal. If you want to overwrite the file
itself (a common use-case) then add `--write`. You should quote your globs, otherwise your terminal will expand the glob before it gets to `prettier-eslint` (which can have unexpected results):

```json
{
"scripts": {
"format": "prettier-eslint --write \"src/**/*.js\""
}
}
```

> **NOTE:** It is recommended that you keep your files under source control and committed
> before running `prettier-eslint --write` as it will overwrite your files!

#### --list-different

Instead of printing the formatted version of the files to the terminal, `prettier-eslint` will log the name of the files that are different from the expected formatting. This can be usefull when using `prettier-eslint` in a version control system hook to inform the committer which files need to be formatted.

#### --stdin

Accept input via `stdin`. For example:

```
echo "var foo = 'bar'" | prettier-eslint --stdin
# results in: "var foo = 'bar';" (depending on your eslint config)
```

#### --eslint-path

Forwarded as the `eslintPath` option to `prettier-eslint`

#### --eslint-config-path

Resolve eslint config file, parse and forward config object as the `eslintConfig` option to
`prettier-eslint`

#### --prettier-path

Forwarded as the `prettierPath` option to `prettier-eslint`

#### --log-level

Forwarded as `logLevel` option to `prettier-eslint`

#### --no-eslint-ignore

Disables application of `.eslintignore` to the files resolved from the glob. By
default, `prettier-eslint-cli` will exclude files if they are matched by a
`.eslintignore`. Add this flag to disable this behavior.

> Note: You can also set the `LOG_LEVEL` environment variable to control logging in `prettier-eslint`

#### --prettier-last

By default, `prettier-eslint-cli` will run `prettier` first, then `eslint --fix`. This is great if
you want to use `prettier`, but override some of the styles you don't like using `eslint --fix`.

An alternative approach is to use different tools for different concerns. If you provide the
argument `--prettier-last`, it will run `eslint --fix` first, then `prettier`. This allows you to
use `eslint` to look for bugs and/or bad practices, and use `prettier` to enforce code style.

#### `prettier` options

`prettier-eslint-cli` also supports the same command line options as `prettier`.

For example: `prettier-eslint --trailing-comma es5`

Refer to the [prettier-eslint](https://github.com/prettier/prettier#options) docs for documentation on these options

## Integration

Any linter that support ESLint [CLIEngine](http://eslint.org/docs/developer-guide/nodejs-api#cliengine) interface can be integrate with `prettier-eslint`

### Knowed integrated package helpers

- [standard-prettier-eslint][standard-prettier-eslint], a helper package for integrate [standard][standard]
- [semistandard-prettier-eslint][semistandard-prettier-eslint], a helper package for integrate [semistandard][semistandard]

### Standalone CLI tools based on `prettier-eslint-cli`

- [prettier-std-cli][prettier-std-cli] the easy to use CLI version of [standard-prettier-eslint][standard-prettier-eslint]
- [prettier-semi-cli][prettier-semi-cli] the easy to use CLI version of [semistandard-prettier-eslint][semistandard-prettier-eslint]

## Related

- [prettier-eslint](https://github.com/prettier/prettier-eslint) - the core package
- [prettier-eslint-atom](https://github.com/kentcdodds/prettier-eslint-atom) - an atom plugin

## Contributors

Thanks goes to these people ([emoji key][emojis]):



Kent C. Dodds
Kent C. Dodds

๐Ÿ’ป ๐Ÿ“– ๐Ÿš‡ โš ๏ธ
Adam Harris
Adam Harris

๐Ÿ’ป ๐Ÿ“– ๐Ÿ‘€
Eric McCormick
Eric McCormick

๐Ÿ‘€
Joel Sequeira
Joel Sequeira

๐Ÿ“–
Frank Taillandier
Frank Taillandier


Adam Stankiewicz
Adam Stankiewicz

๐Ÿ’ป
Stephen John Sorensen
Stephen John Sorensen

๐Ÿ’ป


Gandem
Gandem

๐Ÿ’ป โš ๏ธ
Matteo Ronchi
Matteo Ronchi

๐Ÿ› ๐Ÿ’ป
Benoรฎt Zugmeyer
Benoรฎt Zugmeyer

๐Ÿ’ป โš ๏ธ
Charlike Mike Reagent
Charlike Mike Reagent

๐Ÿ’ป โš ๏ธ
Dion Dirza
Dion Dirza

๐Ÿ›
mrm007
mrm007

๐Ÿ› ๐Ÿ’ป
Jack Franklin
Jack Franklin

๐Ÿ’ป


Ryan Zimmerman
Ryan Zimmerman

๐Ÿ“–
Paolo Moretti
Paolo Moretti

๐Ÿ› ๐Ÿ’ป โš ๏ธ
bySabi Files
bySabi Files

๐Ÿ“– ๐Ÿ”ง
Pavel Pertsev
Pavel Pertsev

๐Ÿ’ป โš ๏ธ
Josh English
Josh English

โš ๏ธ ๐Ÿ› ๐Ÿ’ป ๐Ÿ”Œ
Spenser Isdahl
Spenser Isdahl

๐Ÿ’ป ๐Ÿ“– โš ๏ธ
Bjรถrn Dalfors
Bjรถrn Dalfors

๐Ÿš‡


Steven Scaffidi
Steven Scaffidi

๐Ÿ“–
Daniel Wilhelmsen
Daniel Wilhelmsen

๐Ÿ’ป ๐Ÿšง
Glen Whitney
Glen Whitney

๐Ÿšง
Rebecca Vest
Rebecca Vest

๐Ÿ’ป
JounQin
JounQin

๐Ÿ’ฌ ๐Ÿ’ป ๐ŸŽจ ๐Ÿ“– ๐Ÿค” ๐Ÿš‡ ๐Ÿšง ๐Ÿ”Œ ๐Ÿ“† ๐Ÿ‘€ โš ๏ธ ๐Ÿ”ง
dorser
dorser

๐Ÿ’ป ๐Ÿšง
ใ•ใใ‚‰
ใ•ใใ‚‰

๐Ÿ’ป

This project follows the [all-contributors][all-contributors] specification. Contributions of any kind welcome!

## LICENSE

MIT

[yarn]: https://yarnpkg.com/
[npm]: https://www.npmjs.com/
[node]: https://nodejs.org
[build-badge]: https://img.shields.io/github/actions/workflow/status/prettier/prettier-eslint-cli/ci.yml?style=flat-square
[build]: https://github.com/prettier/prettier-eslint-cli/actions/workflows/ci.yml
[coverage-badge]: https://img.shields.io/codecov/c/github/prettier/prettier-eslint-cli.svg?style=flat-square
[coverage]: https://codecov.io/github/prettier/prettier-eslint-cli
[version-badge]: https://img.shields.io/npm/v/prettier-eslint-cli.svg?style=flat-square
[package]: https://www.npmjs.com/package/prettier-eslint-cli
[downloads-badge]: https://img.shields.io/npm/dm/prettier-eslint-cli.svg?style=flat-square
[npm-stat]: http://npm-stat.com/charts.html?package=prettier-eslint-cli&from=2016-04-01
[license-badge]: https://img.shields.io/npm/l/prettier-eslint-cli.svg?style=flat-square
[license]: https://github.com/prettier/prettier-eslint-cli/blob/master/other/LICENSE
[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square
[prs]: http://makeapullrequest.com
[donate-badge]: https://img.shields.io/badge/$-support-green.svg?style=flat-square
[donate]: https://www.paypal.me/zimme
[coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square
[coc]: https://github.com/prettier/prettier-eslint-cli/blob/master/other/CODE_OF_CONDUCT.md
[roadmap-badge]: https://img.shields.io/badge/%F0%9F%93%94-roadmap-CD9523.svg?style=flat-square
[roadmap]: https://github.com/prettier/prettier-eslint-cli/blob/master/other/ROADMAP.md
[examples-badge]: https://img.shields.io/badge/%F0%9F%92%A1-examples-8C8E93.svg?style=flat-square
[examples]: https://github.com/prettier/prettier-eslint-cli/blob/master/other/EXAMPLES.md
[github-watch-badge]: https://img.shields.io/github/watchers/prettier/prettier-eslint-cli.svg?style=social
[github-watch]: https://github.com/prettier/prettier-eslint-cli/watchers
[github-star-badge]: https://img.shields.io/github/stars/prettier/prettier-eslint-cli.svg?style=social
[github-star]: https://github.com/prettier/prettier-eslint-cli/stargazers
[twitter]: https://twitter.com/intent/tweet?text=Check%20out%20prettier-eslint-cli!%20https://github.com/prettier/prettier-eslint-cli%20%F0%9F%91%8D
[twitter-badge]: https://img.shields.io/twitter/url/https/github.com/prettier/prettier-eslint-cli.svg?style=social
[emojis]: https://github.com/kentcdodds/all-contributors#emoji-key
[all-contributors]: https://github.com/kentcdodds/all-contributors
[prettier-eslint]: https://github.com/prettier/prettier-eslint
[npm scripts]: https://docs.npmjs.com/misc/scripts
[package scripts]: https://github.com/kentcdodds/p-s
[glob]: https://github.com/isaacs/node-glob
[standard-prettier-eslint]: https://github.com/bySabi/standard-prettier-eslint
[semistandard-prettier-eslint]: https://github.com/bySabi/semistandard-prettier-eslint
[standard]: https://github.com/standard/standard
[semistandard]: https://github.com/Flet/semistandard
[prettier-std-cli]: https://github.com/bySabi/prettier-std-cli
[prettier-semi-cli]: https://github.com/bySabi/prettier-semi-cli