prettier-eslint-cli

by prettier

CLI for prettier-eslint

426 Stars 66 Forks Last release: over 1 year ago (v5.0.0) MIT License 108 Commits 51 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

prettier-eslint-cli

CLI for

prettier-eslint

Build Status Code Coverage version downloads MIT License

All Contributors PRs Welcome Donate Code of Conduct Roadmap Examples

Watch on GitHub Star on GitHub Tweet

Sponsor

The problem

You have a bunch of files that you want to format using

prettier-eslint
. But

prettier-eslint
can only operate on strings.

This solution

This is a CLI 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 which is bundled with node and should be installed (with

yarn
) as one of your project's

devDependencies
:
yarn add --dev prettier-eslint-cli

If you're still using the

npm
client:

npm install --save-dev prettier-eslint-cli

Usage

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

{
  "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 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] --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 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):
{
  "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 docs for documentation on these options

Integration

Any linter that support ESLint CLIEngine interface can be integrate with

prettier-eslint

Knowed integrated package helpers

Standalone CLI tools based on
prettier-eslint-cli

Related

Contributors

Thanks goes to these people (emoji key):

|
Kent C. Dodds

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

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

๐Ÿ‘€ |
Joel Sequeira

๐Ÿ“– |
Frank Taillandier

|
Adam Stankiewicz

๐Ÿ’ป |
Stephen John Sorensen

๐Ÿ’ป | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | |
Gandem

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

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

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

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

๐Ÿ› |
mrm007

๐Ÿ› ๐Ÿ’ป |
Jack Franklin

๐Ÿ’ป | |
Ryan Zimmerman

๐Ÿ“– |
Paolo Moretti

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

๐Ÿ“– ๐Ÿ”ง |
Pavel Pertsev

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

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

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

๐Ÿš‡ |

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

LICENSE

MIT

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.