Add ESLint#81
Merged
Merged
Conversation
Phase 2b of the #64 split: adds ESLint tooling (eslint-config-expensify + eslint-plugin-rulesdir) and a lint CI workflow, without any typechecking, formatting, or test infrastructure (those land in separate parallel PRs). Co-authored-by: Cursor <cursoragent@cursor.com>
…eslint # Conflicts: # package-lock.json # package.json
Use typescript-eslint recommended instead of eslint-config-expensify/typescript, which only needed rulesdir for custom App rules this repo does not use.
The repo is small enough that linting the whole tree is sufficient.
Re-enable Expensify TypeScript rules and document why rulesdir must be registered manually. Restore naming-convention disables for kebab-case CLI argument names.
roryabraham
marked this pull request as ready for review
July 3, 2026 07:52
marcochavezf
approved these changes
Jul 3, 2026
roryabraham
added a commit
that referenced
this pull request
Jul 9, 2026
Integrate the split peer-review infrastructure PRs (#76-#81) while keeping the branch's verifyPeerReview implementation and tests. Conflict resolution favors main for tooling (Oxfmt, ESLint, CI workflows, pull_request_target workflow) and keeps branch logic for the peer review script, libs, and policy tests. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Details
Adds ESLint tooling:
eslint.config.mjs— built oneslint-config-expensify/{node,typescript,scripts,jest}pluseslint-plugin-rulesdir..github/workflows/lint.yml— CI workflow that runsnpm run linton relevant file changes.package.json/package-lock.json— adds thelintscript and theeslint,eslint-config-expensify,eslint-plugin-rulesdirdevDependencies.eslint.config.mjsconfigurestypescript-eslintwith an explicitproject: tsconfig.jsonparser option for type-aware linting of.tsfiles, so it requires atsconfig.jsonto exist at the repo root. If this repo doesn't have atsconfig.jsonyet,npm run lintwill fail withCannot read file 'tsconfig.json'until one is added — I verified the config itself is correct by temporarily adding atsconfig.json(not committed here) and confirmingnpm run lintpasses cleanly with it in place.Also added
--no-error-on-unmatched-patternto thelintscript (eslint --no-error-on-unmatched-pattern scripts tests) since this repo doesn't have atests/directory yet and ESLint's CLI otherwise hard-errors on an unmatched path pattern. This flag is forward-compatible and becomes a no-op once atests/directory exists.Related Issues
https://github.com/Expensify/Expensify/issues/636197
Manual Tests
Ran
npm installto regeneratepackage-lock.json, then verifiedeslint.config.mjsandlint.ymlare correct by temporarily adding atsconfig.json+@types/node(not committed) and confirmingnpm run lintexits 0 with no errors or warnings. Without atsconfig.jsonpresent,npm run lintfails as described above.Linked PRs
None.
Made with Cursor