リンティング設定

デフォルトのリンティング構成と、それが機能するはずの方法との間に大きな違いが見られます。

デフォルトの構成では、eslint-config-discourse パッケージが devDependency としてインストールされます。
https://www.npmjs.com/package/eslint-config-discourse

しかし、ソースコードを GitHub - discourse/lint-configs で確認すると、リポジトリは @discourse/lint-configs にリダイレクトされます。これは eslint-config-discourse monorepo の下のパッケージでもあります。含まれているテストにより、eslint-config-discourse はラッパーであるべきだと思いますが、少なくとも私の経験では、期待どおりに機能していません。

デフォルトのリンティング構成

  1. discourse_theme new コマンドを使用して新しいテーマを作成します。
  2. 生成されたリンティング構成を確認します。
    a. .eslintrc
    {
      "extends": "eslint-config-discourse",
      "globals": {
        "settings": "readonly",
        "themePrefix": "readonly"
      }
    }
    
    b. .template-lintrc.js:
    module.exports = {
      plugins: ["ember-template-lint-plugin-discourse"],
      extends: "discourse:recommended",
    };
    
    c. package.json
    {
      "license": "MIT",
      "devDependencies": {
        "eslint-config-discourse": "latest"
      }
    }
    
  3. パッケージで 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

  1. yarn remove -D eslint-config-discourse を実行してパッケージをアンインストールします。
  2. yarn add -D @discourse/lint-configs を実行して開発依存関係としてインストールします。
  3. 説明に従って、リンティング構成ファイルを作成します。
    a. .eslintrc ファイルを .eslintrc.cjs に置き換えます。
    module.exports = require("@discourse/lint-configs/eslint-theme");
    
    b. .prettierrc.cjs ファイルを追加します。
    module.exports = require("@discourse/lint-configs/prettier");
    
    c. .template-lintrc.js ファイルを .template-lintrc.cjs に置き換えます。
    module.exports = require("@discourse/lint-configs/template-lint");
    
  4. 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 が古いと仮定し、今後プロジェクトでは @discourse/lint-configs オプションを使用すべきでしょうか?

いいえ。それを信頼してください。リポジトリに提出して、リンティングコマンドが失敗したときに確認してください。

「いいね!」 1

@pfaffmanさん

リポジトリで簡単なテストを行いました。どちらのケースも完了はパスしますが、デフォルトの設定ではGJSファイルにエラーが発生し、スキャンされません。

2番目のアプローチでは、GJSファイルが認識され、正常にリンティングされました。

mainブランチのアクションとlintingブランチのアクションを比較してください。lintingブランチには2番目のオプションの設定のみを導入しました。

main:

https://github.com/gormus/discourse-filtered-topic-lists/actions/runs/10325377606/job/28586838134?pr=1#step:6:19

linting:

https://github.com/gormus/discourse-filtered-topic-lists/actions/runs/10333473217/job/28605865585?pr=3#step:6:17

そうではありません。最新バージョンの discourse_theme CLI は、GitHub - discourse/discourse-theme-skeleton: Template for Discourse themes をクローンし、入力に基づいて適応させます。これは @discourse/lint-configs を使用します。

アップデート手順はこちらです。

「いいね!」 4

ありがとうございます。これでバージョンを取得できるようになりました(以前はバージョンを取得できませんでした)。

discourse_theme --version
2.1.2

そして、更新されたコマンドリストです。

discourse_theme --help
Usage: discourse_theme COMMAND [DIR] [OPTIONS]

Commands:
  new DIR               - 指定されたディレクトリに新しいテーマを作成します。
  download DIR          - サーバーからテーマをダウンロードし、指定されたディレクトリに保存します。
  upload DIR            - 指定されたディレクトリからDiscourseにテーマをアップロードします。
  watch DIR             - 指定されたディレクトリのテーマを監視し、Discourseとのあらゆる変更を同期します。
  rspec DIR [OPTIONS]   - 指定されたディレクトリでRSpecテストを実行します。テストはローカルのDiscourseリポジトリまたはDockerコンテナを使用して実行できます。
    --headful           - RSpecシステムタイプテストをヘッドフルモードで実行します。両方のモードに適用されます。

    指定されたディレクトリがDockerコンテナで実行するように構成されている場合、追加のオプションがサポートされます。
    --rebuild           - Dockerコンテナの再構築を強制します。
    --verbose           - Dockerコンテナの準備コマンドを詳細モードで実行します。

Global Options:
  --reset               - 指定されたディレクトリの設定をリセットします。

そしてもちろん、生成されたスケルトンも新しくなりました。 :smiley:

「いいね!」 5

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.