CLI: Add --ignore-unknown (#8829)
Co-authored-by: Georgii Dolzhykov <thorn.mailbox@gmail.com> Co-authored-by: sosukesuzuki <aosukeke@gmail.com>
This commit is contained in:
19 files changed
+212
-18
No files matched your search
+1
-13
@@ -1,16 +1,4 @@
|
||||
- id: prettier
|
||||
name: prettier
|
||||
entry: prettier --write --list-different
|
||||
entry: prettier --write --list-different --ignore-unknown
|
||||
language: node
|
||||
files: "\\.(\
|
||||
css|less|scss\
|
||||
|graphql|gql\
|
||||
|html\
|
||||
|js|jsx\
|
||||
|json\
|
||||
|md|markdown|mdown|mkdn\
|
||||
|mdx\
|
||||
|ts|tsx\
|
||||
|vue\
|
||||
|yaml|yml\
|
||||
)$"
|
||||
@@ -0,0 +1,14 @@
|
||||
#### Added `--ignore-unknown`(alias `-u`) flag ([#8829](https://github.com/prettier/prettier/pull/8829) by [@fisker](https://github.com/fisker))
|
||||
|
||||
```console
|
||||
# Prettier stable
|
||||
npx prettier * --check
|
||||
Checking formatting...
|
||||
foo.unknown[error] No parser could be inferred for file: foo.unknown
|
||||
All matched files use Prettier code style!
|
||||
|
||||
# Prettier master
|
||||
npx prettier * --check --ignore-unknown
|
||||
Checking formatting...
|
||||
All matched files use Prettier code style!
|
||||
```
|
||||
@@ -204,3 +204,11 @@ $ cat abc.css | prettier --stdin-filepath abc.css
|
||||
display: none;
|
||||
}
|
||||
```
|
||||
|
||||
## `--ignore-unknown`
|
||||
|
||||
With `--ignore-unknown` (or `-u`), prettier will ignore unknown files matched by patterns.
|
||||
|
||||
```console
|
||||
$ prettier "**/*" --write --ignore-unknown
|
||||
```
|
||||
+3
-1
@@ -103,11 +103,13 @@ For example, you can add the following to your `package.json` to have ESLint and
|
||||
}
|
||||
},
|
||||
"lint-staged": {
|
||||
"**/*": ["eslint --fix", "prettier --write"]
|
||||
"**/*": "prettier --write --ignore-unknown"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> Note: If you use ESLint, make sure lint-staged runs it before Prettier, not after.
|
||||
|
||||
See [Pre-commit Hook](precommit.md) for more information.
|
||||
|
||||
## Summary
|
||||
|
||||
+1
-1
@@ -103,7 +103,7 @@ and add this config to your `package.json`:
|
||||
{
|
||||
"husky": {
|
||||
"hooks": {
|
||||
"pre-commit": "git-format-staged -f 'prettier --stdin --stdin-filepath \"{}\"' ."
|
||||
"pre-commit": "git-format-staged -f 'prettier --ignore-unknown --stdin --stdin-filepath \"{}\"' ."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ title: Watching For Changes
|
||||
You can have Prettier watch for changes from the command line by using [onchange](https://www.npmjs.com/package/onchange). For example:
|
||||
|
||||
```bash
|
||||
npx onchange '**/*.js' -- npx prettier --write {{changed}}
|
||||
npx onchange "**/*" -- npx prettier --write --ignore-unknown {{changed}}
|
||||
```
|
||||
|
||||
Or add the following to your `package.json`:
|
||||
@@ -14,7 +14,7 @@ Or add the following to your `package.json`:
|
||||
```json
|
||||
{
|
||||
"scripts": {
|
||||
"prettier-watch": "onchange '**/*.js' -- prettier --write {{changed}}"
|
||||
"prettier-watch": "onchange \"**/*\" -- prettier --write --ignore-unknown {{changed}}"
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -174,6 +174,11 @@ const options = {
|
||||
default: ".prettierignore",
|
||||
description: "Path to a file with patterns describing files to ignore.",
|
||||
},
|
||||
"ignore-unknown": {
|
||||
type: "boolean",
|
||||
alias: "u",
|
||||
description: "Ignore unknown files.",
|
||||
},
|
||||
"list-different": {
|
||||
type: "boolean",
|
||||
category: coreOptions.CATEGORY_OUTPUT,
|
||||
|
||||
+4
-1
@@ -61,10 +61,13 @@ function diff(a, b) {
|
||||
|
||||
function handleError(context, filename, error) {
|
||||
if (error instanceof errors.UndefinedParserError) {
|
||||
if (context.argv.write && isTTY()) {
|
||||
if ((context.argv.write || context.argv["ignore-unknown"]) && isTTY()) {
|
||||
readline.clearLine(process.stdout, 0);
|
||||
readline.cursorTo(process.stdout, 0, null);
|
||||
}
|
||||
if (context.argv["ignore-unknown"]) {
|
||||
return;
|
||||
}
|
||||
if (!context.argv.check && !context.argv["list-different"]) {
|
||||
process.exitCode = 2;
|
||||
}
|
||||
|
||||
@@ -151,6 +151,7 @@ Other options:
|
||||
* inferredParser (string | null) - name of parser inferred from file path
|
||||
-h, --help <flag> Show CLI usage, or details about the given flag.
|
||||
Example: --help write
|
||||
-u, --ignore-unknown Ignore unknown files.
|
||||
--insert-pragma Insert @format pragma into file's first docblock comment.
|
||||
Defaults to false.
|
||||
--loglevel <silent|error|warn|log|debug>
|
||||
@@ -310,6 +311,7 @@ Other options:
|
||||
* inferredParser (string | null) - name of parser inferred from file path
|
||||
-h, --help <flag> Show CLI usage, or details about the given flag.
|
||||
Example: --help write
|
||||
-u, --ignore-unknown Ignore unknown files.
|
||||
--insert-pragma Insert @format pragma into file's first docblock comment.
|
||||
Defaults to false.
|
||||
--loglevel <silent|error|warn|log|debug>
|
||||
|
||||
@@ -221,6 +221,17 @@ Default: .prettierignore
|
||||
|
||||
exports[`show detailed usage with --help ignore-path (write) 1`] = `Array []`;
|
||||
|
||||
exports[`show detailed usage with --help ignore-unknown (stderr) 1`] = `""`;
|
||||
|
||||
exports[`show detailed usage with --help ignore-unknown (stdout) 1`] = `
|
||||
"-u, --ignore-unknown
|
||||
|
||||
Ignore unknown files.
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`show detailed usage with --help ignore-unknown (write) 1`] = `Array []`;
|
||||
|
||||
exports[`show detailed usage with --help insert-pragma (stderr) 1`] = `""`;
|
||||
|
||||
exports[`show detailed usage with --help insert-pragma (stdout) 1`] = `
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Ignored file (stderr) 1`] = `""`;
|
||||
|
||||
exports[`Ignored file (stdout) 1`] = `""`;
|
||||
|
||||
exports[`Ignored file (write) 1`] = `Array []`;
|
||||
|
||||
exports[`None exist file (stderr) 1`] = `
|
||||
"[error] No files matching the pattern were found: \\"non-exist-file\\".
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`None exist file (stdout) 1`] = `""`;
|
||||
|
||||
exports[`None exist file (write) 1`] = `Array []`;
|
||||
|
||||
exports[`Not matching pattern (stderr) 1`] = `
|
||||
"[error] No files matching the pattern were found: \\"*.non-exist-pattern\\".
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`Not matching pattern (stdout) 1`] = `""`;
|
||||
|
||||
exports[`Not matching pattern (write) 1`] = `Array []`;
|
||||
|
||||
exports[`ignore-unknown alias (stdout) 1`] = `
|
||||
"javascript.js
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`ignore-unknown check (stderr) 1`] = `
|
||||
"[warn] javascript.js
|
||||
[warn] Code style issues found in the above file(s). Forgot to run Prettier?
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`ignore-unknown check (stdout) 1`] = `
|
||||
"Checking formatting...
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`ignore-unknown check (write) 1`] = `Array []`;
|
||||
|
||||
exports[`ignore-unknown dir (stdout) 1`] = `
|
||||
"javascript.js
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`ignore-unknown pattern (stdout) 1`] = `
|
||||
"javascript.js
|
||||
override.as-js-file
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`ignore-unknown write (stdout) 1`] = `
|
||||
"javascript.js
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`ignore-unknown write (write) 1`] = `
|
||||
Array [
|
||||
Object {
|
||||
"content": "const foo = \\"bar\\";
|
||||
",
|
||||
"filename": "javascript.js",
|
||||
},
|
||||
]
|
||||
`;
|
||||
@@ -0,0 +1,77 @@
|
||||
"use strict";
|
||||
|
||||
const runPrettier = require("../runPrettier");
|
||||
|
||||
describe("ignore-unknown dir", () => {
|
||||
runPrettier("cli/ignore-unknown", [
|
||||
".",
|
||||
"--ignore-unknown",
|
||||
"--list-different",
|
||||
]).test({
|
||||
status: "non-zero",
|
||||
stderr: "",
|
||||
write: [],
|
||||
});
|
||||
});
|
||||
|
||||
describe("ignore-unknown alias", () => {
|
||||
runPrettier("cli/ignore-unknown", [".", "-u", "--list-different"]).test({
|
||||
status: "non-zero",
|
||||
stderr: "",
|
||||
write: [],
|
||||
});
|
||||
});
|
||||
|
||||
describe("ignore-unknown pattern", () => {
|
||||
runPrettier("cli/ignore-unknown", [
|
||||
"*",
|
||||
"--ignore-unknown",
|
||||
"--list-different",
|
||||
]).test({
|
||||
status: "non-zero",
|
||||
stderr: "",
|
||||
write: [],
|
||||
});
|
||||
});
|
||||
|
||||
describe("ignore-unknown write", () => {
|
||||
runPrettier("cli/ignore-unknown", [
|
||||
".",
|
||||
"--ignore-unknown",
|
||||
"--write",
|
||||
"--list-different",
|
||||
]).test({
|
||||
status: 0,
|
||||
stderr: "",
|
||||
});
|
||||
});
|
||||
|
||||
describe("ignore-unknown check", () => {
|
||||
runPrettier("cli/ignore-unknown", [".", "--ignore-unknown", "--check"]).test({
|
||||
status: 1,
|
||||
});
|
||||
});
|
||||
|
||||
describe("None exist file", () => {
|
||||
runPrettier("cli/ignore-unknown", [
|
||||
"non-exist-file",
|
||||
"--ignore-unknown",
|
||||
]).test({
|
||||
status: 2,
|
||||
});
|
||||
});
|
||||
|
||||
describe("Not matching pattern", () => {
|
||||
runPrettier("cli/ignore-unknown", [
|
||||
"*.non-exist-pattern",
|
||||
"--ignore-unknown",
|
||||
]).test({
|
||||
status: 2,
|
||||
});
|
||||
});
|
||||
|
||||
describe("Ignored file", () => {
|
||||
runPrettier("cli/ignore-unknown", ["ignored.js", "--ignore-unknown"]).test({
|
||||
status: 0,
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1 @@
|
||||
ignored.js
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"overrides": [
|
||||
{
|
||||
"files": "*.as-js-file",
|
||||
"options": {
|
||||
"parser": "babel"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Whitespace-only changes.
@@ -0,0 +1 @@
|
||||
const foo= "bar";
|
||||
@@ -0,0 +1 @@
|
||||
const foo= "bar";
|
||||
@@ -0,0 +1 @@
|
||||
PRETTIER
|
||||
@@ -0,0 +1 @@
|
||||
PRETTIER
|
||||
Reference in new issue
Block a user