Open JounQin opened 10 months ago
I'm strongly opposed to adding new features that allow users to do customizations that diverge from the standard "configure prettier using the .prettierrc / .prettierignore file" behaviour. I would strongly advise against implementing this.
The aim is that you should get identical output if you format a file through prettier's CLI or through eslint with eslint-plugin-prettier
. Adding options or additional behaviour to eslint-plugin-prettier
is a vector for allowing divergences to happen, which moves us away from that goal, and increases our support burden as there is potential for suprising behaviour that is not what eslint or prettier themselves do.
This proposal introduces plugin-specific behaviour and the critical tenant of "eslint CLI and prettier CLI must produce the same output" breaks.
In cases where a .eslintignore file is present then for files mentioned in that file the prettier/prettier
rule (any any other rule) will never be invoked in the first place. If a file is mentioned in the eslintignore then the code that runs prettier would never be invoked in the first place. Can you give an example of when setting this would have an effect?
@BPScott prettier will respect .gitignore
+ .prettierignore
by default at the same time on prettier v3.
Tip! Prettier will follow rules specified in .gitignore if it exists in the same directory from which it is run. You can also base your .prettierignore on .eslintignore (if you have one).
See also: https://prettier.io/docs/en/install and
If a file is mentioned in the eslintignore then the code that runs prettier would never be invoked in the first place. Can you give an example of when setting this would have an effect?
That's a good point. ESLint runs different from prettier itself on virtual files.
For instance, I have a plugin extracting JavaScript codes from .txt
files, prettier does not support .txt
files natively, so it would be passed as .txt/0_xxx.js
to prettier.format
, and mostly there will be no *.txt/*.js
in .prettierignore
, but there could be *.txt/*.js
in .eslintignore
.
So my proposed change would be changing the following
- ignorePath: '.prettierignore',
+ ignorePath: ['.gitignore', '.prettierignore', '.eslintignore'],
Friendly ping @BPScott
What version of
eslint
are you using?8.56.0
What version of
prettier
are you using?3.1.1
What version of
eslint-plugin-prettier
are you using?5.1.2
Please paste any applicable config files that you're using (e.g.
.prettierrc
or.eslintrc
files).prettierrc
What source code are you linting?
N/A
What did you expect to happen?
When
.prettierignore
not found,.eslintignore
should be used asignorePath
What actually happened?
When
.prettierignore
not found,.gitignore
will be used asignorePath
byprettier
itself