Repository navigation
chore(lint): migrate from tslint to eslint - #2297
Conversation
| # imports; see .eslintrc.js and eslint-rules/). | ||
| bazel build @npm//eslint/bin:eslint && bazel-bin/external/npm/eslint/bin/eslint.sh --rulesdir eslint-rules 'core/**/*.ts' | ||
| # Run eslint. | ||
| bazel build @npm//eslint/bin:eslint && bazel-bin/external/npm/eslint/bin/eslint.sh --rulesdir eslint-rules '**/*.ts' |
There was a problem hiding this comment.
Suggestion: Consider adding bazel run @nodejs//:yarn before running ESLint here, matching scripts/run_tests and scripts/run_integration_tests:
bazel run @nodejs//:yarn
bazel build @npm//eslint/bin:eslint && bazel-bin/external/npm/eslint/bin/eslint.sh --rulesdir eslint-rules '**/*.ts'On a pristine checkout where node_modules is not yet populated on the host machine, running ./scripts/lint directly fails with Cannot find module '@typescript-eslint/parser' because ESLint resolves the parser declared in .eslintrc.js from the host's node_modules.
There was a problem hiding this comment.
Good catch, added.
|
|
||
| nodejs_binary( | ||
| name = "tslint", | ||
| name = "eslint", |
There was a problem hiding this comment.
Note on nodejs_binary(name = "eslint", ...):
Running bazel run //:eslint -- --rulesdir eslint-rules '**/*.ts' executes inside Bazel's sandbox runfiles directory, where repository source **/*.ts files are not present. Invoking through @npm//eslint/bin:eslint via ./scripts/lint works as expected and mirrors how TSLint was previously run.
tslint.jsonconfiguration files and uninstalled TSLint dependencies..eslintrc.jswith project-wide quality rules and import ordering.//:tslinttarget inBUILDwith//:eslintand updated test scripts.// tslint:disablecomments.