eslint 문제

새 플러그인이 린트 테스트에서 실패하고 있습니다:

Run if test -f .prettierrc.cjs; then
yarn run v1.22.22
$ /home/runner/work/discourse-multi-rating/discourse-multi-rating/node_modules/.bin/eslint --ext .js,.gjs,.js.es6 --no-error-on-unmatched-pattern test/javascripts assets/javascripts admin/assets/javascripts
Invalid option '--ext' - perhaps you meant '-c'?
You're using eslint.config.js, some command line flags are no longer available. Please see https://eslint.org/docs/latest/use/command-line-interface for details.
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Error: Process completed with exit code 2.

소스 트리에서 --ext를 찾을 수 없어서, 아마도 @discourse/lint-configs/eslint") 안에 있는 것 같습니다. 하지만 어디서 찾을 수 있는지 모르겠습니다.

제가 뭘 잘못하고 있는지, 혹은 왜 이 문제가 다른 많은 플러그인에는 영향을 주지 않는지 이해가 되지 않습니다. :person_shrugging:

나도 플러그인에서 이 오류를 확인했습니다. 원인이 eslint 마이그레이션을 통해 eslint 설정 파일을 .eslintrc.cjs에서 최신 flat config 형식인 eslint.config.js로 변경하려고 시도했기 때문인 것을 파악했습니다. eslint.config.js는 --ext(Command Line Interface Reference - ESLint - Pluggable JavaScript Linter)를 지원하지 않으므로, 파일을 이전 버전인 .eslintrc.cjs로 변경하면 해결될 것입니다.

린트 파일 설정 방법에 대한 추가 지침은 lint-configs/lint-configs at main · discourse/lint-configs · GitHub 에서 확인할 수 있습니다.

참고로, @discourse/lint-configs는 eslint 8.57.0을 사용하며, 이 버전은 기본적으로 새로운 flat config(Configuration Files - ESLint - Pluggable JavaScript Linter)를 사용하지 않습니다.

정말 이상하네요. 파일 시스템 어디에도 eslint.confi.js가 보이지 않습니다(locate를 신뢰한다면, 그리고 제 소스 트리에는 분명히 없습니다).

해결되셨나요?

오, 이상하네… 내 쪽은 작동하도록 해결했어요.

"eslint": "8.57.0",이 있는지, 아니면 9.x.x 버전인지 확인하기 위해 package.json을 살펴보세요.

네. :crying_cat_face: 방금 package.json에서 eslint와 prettier가 변경된 걸 알아차렸어요. 분명 몇 분 전에 스켈레톤에서 클론을 받았는데 말이죠. :person_shrugging:

지금은 GitHub에서 (정당한) 에러가 뜨는데, 로컬에서 eslint를 실행해서 문제를 해결할 수가 없어요.

Jay,

do:

yarn

그 다음

yarn eslint --fix plugins/<my-plugin>

(물론 "my plugin"은 수정해야 합니다)

두 명령어 모두 discourse 디렉터리에서 실행하세요.

OMG. 어떻게든 고치는 데 성공했는데, 재현이 완전히 불가능한 상태였거든요. 그래서 이건 정말 구세주네요. 그리고 이제 제 매직 파일에 추가해 두었으니, 다음에는 이 방법이 통할지도 몰라요.

if [[ "$ARG" == 'fix-eslint' ]]
then
  cd ~/src/discourse-repos/discourse
  yarn
  for x in ~/plugins/* 
  do
    yarn eslint --fix x
  done
fi

잠깐. 이게 eslint를 적절한 버전으로 업데이트한다는 뜻인가요? 아니면 eslint를 실행한다는 건가요? 아니면 그 방식으로 실행하면 올바른 버전이 된다는 건가요?