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).
494 B
494 B
Input
Command
oxfmt --check ignored-by-root.js
File tree
- fixtures/ <CWD>
- .gitignore
- another/
- another.js
- ignored-by-root.js
- root.js
- subdir/
- ignored-by-subdir.js
- sub.js
Result
Exit code
1
stdout
Checking formatting...
ignored-by-root.js (<time>)
Format issues found in above 1 files. Run without `--check` to fix.
Finished in <time> on 1 files using 1 threads.
stderr
File changes
No changes