기본 린팅 설정과 의도된 동작 방식 사이에 상당한 차이를 발견했습니다.
기본 설정은 eslint-config-discourse 패키지를 dev devendency로 설치합니다:
https://www.npmjs.com/package/eslint-config-discourse
하지만 https://github.com/discourse/eslint-config-discourse 에서 소스 코드를 찾아보면, 해당 저장소가 @discourse/lint-configs로 리다이렉트됩니다. 이는 eslint-config-discourse 모노레포 하위의 또 다른 패키지이기도 합니다. 포함된 테스트를 보면 eslint-config-discourse가 래퍼(wrapper) 역할을 해야 한다고 생각하는데, 제 경험상 의도된 대로 작동하지 않습니다:
기본 린팅 설정
discourse_theme new명령을 사용하여 새 테마를 생성합니다.- 생성된 린팅 구성을 검토합니다:
a..eslintrc
b.{ "extends": "eslint-config-discourse", "globals": { "settings": "readonly", "themePrefix": "readonly" } }.template-lintrc.js:
c.module.exports = { plugins: ["ember-template-lint-plugin-discourse"], extends: "discourse:recommended", };package.json{ "license": "MIT", "devDependencies": { "eslint-config-discourse": "latest" } } - 패키지에 Prettier를 실행하면
*.gjs파일에 대해 오류가 발생합니다:yarn prettier --check --write "{common,javascripts,desktop,mobile,test,scss}/**/*.{js,gjs,es6,scss}"Error: No parser could be inferred for file ... .gjs
@discourse/lint-configs 직접 구성
https://www.npmjs.com/package/@discourse/lint-configs
yarn remove -D eslint-config-discourse를 실행하여 패키지를 제거합니다.yarn add -D @discourse/lint-configs를 실행하여 dev dependency로 설치합니다.- 지침에 따라 린팅 구성 파일을 생성합니다:
a..eslintrc파일을.eslintrc.cjs로 교체합니다.
b.module.exports = require("@discourse/lint-configs/eslint-theme");.prettierrc.cjs파일을 추가합니다:
c.module.exports = require("@discourse/lint-configs/prettier");.template-lintrc.js파일을.template-lintrc.cjs로 교체합니다:module.exports = require("@discourse/lint-configs/template-lint"); - Prettier를 다시 실행하여 오류 없이 작동하는지 확인합니다:
$ yarn prettier --check --write "{common,javascripts,desktop,mobile,test,scss}/**/*.{js,gjs,es6,scss}" Checking formatting... All matched files use Prettier code style! ✨ Done in 0.46s.
따라서 discourse_theme CLI가 구식(outdated)이며, 앞으로 프로젝트에서 @discourse/lint-configs 옵션을 사용해야 한다고 가정해도 될까요?

