Files
test-repo/docs/cli.md
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

248 lines
8.8 KiB
Markdown
Raw Normal View History

2017-11-07 14:39:07 +11:00
---
id: cli
title: CLI
---
Use the `prettier` command to run Prettier from the command line.
2017-11-07 14:39:07 +11:00
```bash
2020-03-17 01:34:32 +02:00
prettier [options] [file/dir/glob ...]
2017-11-07 14:39:07 +11:00
```
> To run your locally installed version of Prettier, prefix the command with `npx` or `yarn` (if you use Yarn), i.e. `npx prettier --help`, or `yarn prettier --help`.
To format a file in-place, use `--write`. (Note: This overwrites your files!)
2017-11-07 14:39:07 +11:00
In practice, this may look something like:
```bash
2020-03-17 01:34:32 +02:00
prettier --write .
```
This command formats all files supported by Prettier in the current directory and its subdirectories.
2021-05-06 09:55:23 -04:00
It’s recommended to always make sure that `prettier --write .` only formats what you want in your project. Use a [`.prettierignore`](ignore.md) file to ignore things that should not be formatted.
2020-03-17 01:34:32 +02:00
A more complicated example:
```bash
prettier --single-quote --trailing-comma all --write docs package.json "{app,__{tests,mocks}__}/**/*.js"
2017-11-07 14:39:07 +11:00
```
> Don’t forget the **quotes** around the globs! The quotes make sure that Prettier CLI expands the globs rather than your shell, which is important for cross-platform usage.
2017-11-07 14:39:07 +11:00
> It’s better to use a [configuration file](configuration.md) for formatting options like `--single-quote` and `--trailing-comma` instead of passing them as CLI flags. This way the Prettier CLI, [editor integrations](editors.md), and other tooling can all know what options you use.
2020-03-17 01:34:32 +02:00
## File patterns
2020-03-17 01:34:32 +02:00
Given a list of paths/patterns, the Prettier CLI first treats every entry in it as a literal path.
- If the path points to an existing file, Prettier CLI proceeds with that file and doesn’t resolve the path as a glob pattern.
2020-03-17 01:34:32 +02:00
- If the path points to an existing directory, Prettier CLI recursively finds supported files in that directory. This resolution process is based on file extensions and well-known file names that Prettier and its [plugins](plugins.md) associate with supported languages.
- Otherwise, the entry is resolved as a glob pattern using the [glob syntax from the `fast-glob` module](https://github.com/mrmlnc/fast-glob#pattern-syntax).
2020-02-19 18:57:39 +08:00
2021-05-06 09:55:23 -04:00
Prettier CLI will ignore files located in `node_modules` directory. To opt out from this behavior, use `--with-node-modules` flag.
2020-02-19 18:57:39 +08:00
To escape special characters in globs, one of the two escaping syntaxes can be used: `prettier "\[my-dir]/*.js"` or `prettier "[[]my-dir]/*.js"`. Both match all JS files in a directory named `[my-dir]`, however the latter syntax is preferable as the former doesn’t work on Windows, where backslashes are treated as path separators.
2017-11-07 14:39:07 +11:00
2018-12-25 08:01:02 +00:00
## `--check`
When you want to check if your files are formatted, you can run Prettier with the `--check` flag (or `-c`).
This will output a human-friendly message and a list of unformatted files, if any.
```bash
prettier --check "src/**/*.js"
```
Console output if all files are formatted:
2020-04-03 18:44:03 +08:00
```console
2018-12-25 08:01:02 +00:00
Checking formatting...
All matched files use Prettier code style!
```
Console output if some of the files require re-formatting:
2020-04-03 18:44:03 +08:00
```console
2018-12-25 08:01:02 +00:00
Checking formatting...
[warn] src/fileA.js
[warn] src/fileB.js
[warn] Code style issues found in 2 files. Forgot to run Prettier?
2018-12-25 08:01:02 +00:00
```
2021-05-06 09:55:23 -04:00
The command will return exit code `1` in the second case, which is helpful inside the CI pipelines.
2018-12-25 08:01:02 +00:00
Human-friendly status messages help project contributors react on possible problems.
To minimise the number of times `prettier --check` finds unformatted files, you may be interested in configuring a [pre-commit hook](precommit.md) in your repo.
Applying this practice will minimise the number of times the CI fails because of code formatting problems.
2020-01-05 17:37:26 +01:00
If you need to pipe the list of unformatted files to another command, you can use [`--list-different`](cli.md#--list-different) flag instead of `--check`.
2018-12-25 08:01:02 +00:00
### Exit codes
| Code | Information |
| ---- | ----------------------------------- |
2021-05-06 09:55:23 -04:00
| `0` | Everything formatted properly |
| `1` | Something wasn’t formatted properly |
| `2` | Something’s wrong with Prettier |
2017-11-07 14:39:07 +11:00
## `--debug-check`
2017-11-22 19:27:40 +08:00
If you're worried that Prettier will change the correctness of your code, add `--debug-check` to the command. This will cause Prettier to print an error message if it detects that code correctness might have changed. Note that `--write` cannot be used with `--debug-check`.
2017-11-07 14:39:07 +11:00
## `--find-config-path` and `--config`
If you are repeatedly formatting individual files with `prettier`, you will incur a small performance cost when Prettier attempts to look up a [configuration file](configuration.md). In order to skip this, you may ask Prettier to find the config file once, and re-use it later on.
2017-11-07 14:39:07 +11:00
```bash
prettier --find-config-path ./my/file.js
./my/.prettierrc
```
This will provide you with a path to the configuration file, which you can pass to `--config`:
```bash
prettier --config ./my/.prettierrc --write ./my/file.js
```
You can also use `--config` if your configuration file lives somewhere where Prettier cannot find it, such as a `config/` directory.
2017-11-07 14:39:07 +11:00
If you don’t have a configuration file, or want to ignore it if it does exist, you can pass `--no-config` instead.
2017-11-07 14:39:07 +11:00
## `--ignore-path`
2017-11-07 14:39:07 +11:00
Path to a file containing patterns that describe files to ignore. By default, Prettier looks for `./.prettierignore`.
2017-11-07 14:39:07 +11:00
## `--list-different`
Another useful flag is `--list-different` (or `-l`) which prints the filenames of files that are different from Prettier formatting. If there are differences the script errors out, which is useful in a CI scenario.
```bash
prettier --single-quote --list-different "src/**/*.js"
```
2020-01-05 17:37:26 +01:00
You can also use [`--check`](cli.md#--check) flag, which works the same way as `--list-different`, but also prints a human-friendly summary message to stdout.
2018-12-25 08:01:02 +00:00
2017-11-07 14:39:07 +11:00
## `--no-config`
2017-11-22 19:27:40 +08:00
Do not look for a configuration file. The default settings will be used.
2017-11-07 14:39:07 +11:00
## `--config-precedence`
Defines how config file should be evaluated in combination of CLI options.
**cli-override (default)**
CLI options take precedence over config file
**file-override**
Config file take precedence over CLI options
**prefer-file**
2021-05-06 09:55:23 -04:00
If a config file is found will evaluate it and ignore other CLI options. If no config file is found, CLI options will evaluate as normal.
2017-11-07 14:39:07 +11:00
This option adds support to editor integrations where users define their default configuration but want to respect project specific configuration.
## `--no-editorconfig`
2021-05-06 09:55:23 -04:00
Don’t take `.editorconfig` into account when parsing configuration. See the [`prettier.resolveConfig` docs](api.md) for details.
2017-11-07 14:39:07 +11:00
## `--with-node-modules`
2021-05-06 09:55:23 -04:00
Prettier CLI will ignore files located in `node_modules` directory. To opt out from this behavior, use `--with-node-modules` flag.
2017-11-07 14:39:07 +11:00
## `--write`
This rewrites all processed files in place. This is comparable to the `eslint --fix` workflow. You can also use `-w` alias.
## `--loglevel`
Change the level of logging for the CLI. Valid options are:
2018-05-27 15:37:44 -03:00
- `error`
- `warn`
- `log` (default)
- `debug`
- `silent`
2018-06-28 12:38:16 -06:00
## `--stdin-filepath`
A path to the file that the Prettier CLI will treat like stdin. For example:
_abc.css_
2018-06-28 16:25:56 -03:00
2018-06-28 12:38:16 -06:00
```css
2018-06-28 16:25:56 -03:00
.name {
display: none;
}
2018-06-28 12:38:16 -06:00
```
_shell_
2018-06-28 16:25:56 -03:00
2020-04-03 18:44:03 +08:00
```console
2018-06-28 12:38:16 -06:00
$ cat abc.css | prettier --stdin-filepath abc.css
.name {
display: none;
}
```
2020-08-21 09:11:59 +08:00
## `--ignore-unknown`
With `--ignore-unknown` (or `-u`), prettier will ignore unknown files matched by patterns.
```console
$ prettier "**/*" --write --ignore-unknown
```
## `--no-error-on-unmatched-pattern`
Prevent errors when pattern is unmatched.
2022-02-18 16:36:53 +08:00
## `--no-plugin-search`
Disable plugin autoloading.
2022-06-11 23:32:32 +09:00
## `--cache`
If this option is enabled, the following values are used as cache keys and the file is formatted only if one of them is changed.
- Prettier version
- Options
- Node.js version
- (if `--cache-strategy` is `metadata`) file metadata, such as timestamps
- (if `--cache-strategy` is `content`) content of the file
```bash
prettier --write --cache src
```
Running Prettier without `--cache` will delete the cache.
Also, since the cache file is stored in `./node_modules/.cache/prettier/.prettier-cache`, so you can use `rm ./node_modules/.cache/prettier/.prettier-cache` to remove it manually.
> Plugins version and implementation are not used as cache keys. We recommend that you delete the cache when updating plugins.
2022-07-31 22:58:05 +09:00
## `--cache-location`
Path to the cache file location used by `--cache` flag. If you don't explicit `--cache-location`, Prettier saves cache file at `./node_modules/.cache/prettier/.prettier-cache`.
If a file path is passed, that file is used as the cache file.
```bash
prettier --write --cache --cache-location=my_cache_file src
```
2022-06-11 23:32:32 +09:00
## `--cache-strategy`
Strategy for the cache to use for detecting changed files. Can be either `metadata` or `content`.
In general, `metadata` is faster. However, `content` is useful for updating the timestamp without changing the file content. This can happen, for example, during git operations such as `git clone`, because it does not track file modification times.
If no strategy is specified, `content` will be used.
```bash
prettier --write --cache --cache-strategy metadata src
```