mirror of
https://github.com/oxc-project/oxc.git
synced 2026-09-14 19:36:11 +08:00
a38f7b3d57
Possibly fixes #25259, and partial revert of #25133. --- - `.gitignore` applies only to discovery (walking directory targets, cwd, globs) - An explicitly named file target is linted / formatted even when gitignored - = Restoring the pre-[#25133]() behavior for files, while fully keeping the [#25107]() fix for walk roots | Target | Current | This PR | | --- | --- | --- | | Explicit file (`oxlint dist/a.js`) | skipped | linted | | Explicit directory (`oxlint dist`) | skipped | skipped | | cwd inside ignored tree | skipped | skipped | The underlying principle: > `.gitignore` is a message addressed to git, not to tools. > Borrowing it to scope discovery is a useful heuristic, and a heuristic may narrow what the walk finds, but never refuse what the user names. > Only tool's own ignore config can refuse. (which remain hard for the husky staged-file case). This also re-aligns the CLI with stdin and LSP, which deliberately do not consult `.gitignore` (#19206). 👉🏻 This is the main motivation. ### Why not full revert A directory target names where to search, not what to process. The files under it are still discovered by the walk, so discovery rules apply. Reverting that would bring back [#25107](), whose old behavior was not even a statable spec: whether running inside an ignored tree processed anything depended on the ignore pattern's form (bare `generated` did, `generated/**` didn't), an artifact of walker pruning, not a design. ### Regarding to `--no-ignore` This flag remains orthogonal as a walk-level opt-out (`--no-ignore=vcs dist`) and for filling gap between existing tools. However, with explicit files working again, I'm inclined to close those PRs and revisit if demand shows up. For [#25259]()'s use case: name the files, e.g. `oxlint dist/foo.js` (or shell-expanded glob).
22 lines
396 B
JSON
22 lines
396 B
JSON
[
|
|
{
|
|
"args": ["--check"],
|
|
"gitignore": {
|
|
".gitignore": "ignored-by-root.js\nsubdir/"
|
|
}
|
|
},
|
|
{
|
|
"args": ["--check"],
|
|
"gitignore": {
|
|
".gitignore": "ignored-by-root.js",
|
|
"subdir/.gitignore": "ignored-by-subdir.js\n"
|
|
}
|
|
},
|
|
{
|
|
"args": ["--check", "ignored-by-root.js"],
|
|
"gitignore": {
|
|
".gitignore": "ignored-by-root.js\nsubdir/"
|
|
}
|
|
}
|
|
]
|