# リンティング設定

**URL:** https://meta.discourse.org/t/linting-configuration/321051
**Category:** Development
**Tags:** development
**Created:** [2024 年 8 月 10 日午後 6:45 UTC](https://meta.discourse.org/t/linting-configuration/321051 "2024-08-10T18:45:58Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![gormus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gormus/32/428592_2.png) [@gormus](https://meta.discourse.org/u/gormus)
#### Post date: [2024 年 8 月 10 日午後 6:45 UTC](https://meta.discourse.org/t/linting-configuration/321051/1 "2024-08-10T18:45:58Z")

</div>

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

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

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

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

1. `discourse_theme new` コマンドを使用して新しいテーマを作成します。
2. 生成されたリンティング構成を確認します。  
a. `.eslintrc`

```plaintext
{
  "extends": "eslint-config-discourse",
  "globals": {
    "settings": "readonly",
    "themePrefix": "readonly"
  }
}

```

b. `.template-lintrc.js`:

```plaintext
module.exports = {
  plugins: ["ember-template-lint-plugin-discourse"],
  extends: "discourse:recommended",
};

```

c. `package.json`

```plaintext
{
  "license": "MIT",
  "devDependencies": {
    "eslint-config-discourse": "latest"
  }
}

```

3. パッケージで Prettier を実行すると、`*.gjs` ファイルに関するエラーが発生します。

```plaintext
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](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` に置き換えます。

```plaintext
module.exports = require("@discourse/lint-configs/eslint-theme");

```

b. `.prettierrc.cjs` ファイルを追加します。

```plaintext
module.exports = require("@discourse/lint-configs/prettier");

```

c. `.template-lintrc.js` ファイルを `.template-lintrc.cjs` に置き換えます。

```plaintext
module.exports = require("@discourse/lint-configs/template-lint");

```

4. Prettier を再度実行し、エラーなしで機能することを確認します。

```plaintext
$ 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` オプションを使用すべきでしょうか？

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2024 年 8 月 10 日午後 10:37 UTC](https://meta.discourse.org/t/linting-configuration/321051/4 "2024-08-10T22:37:44Z")

</div>

> [@gormus](#):
>
> `discourse_theme` CLIは古いと推測すべきでしょうか？

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

---

<div class="post-metadata">

### Author: ![gormus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gormus/32/428592_2.png) [@gormus](https://meta.discourse.org/u/gormus)
#### Post date: [2024 年 8 月 11 日午前 11:47 UTC](https://meta.discourse.org/t/linting-configuration/321051/5 "2024-08-11T11:47:39Z")

</div>

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

@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](https://github.com/gormus/discourse-filtered-topic-lists/actions/runs/10325377606/job/28586838134?pr=1#step:6:19)

 ![Screenshot 2024-08-11 at 2.37.55 PM](https://global.discourse-cdn.com/meta/original/4X/2/9/4/2945658c6d0c0c0b43f768d3956530f6d8569156.png)

**linting:**

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

 ![Screenshot 2024-08-11 at 2.38.47 PM](https://global.discourse-cdn.com/meta/original/4X/4/e/4/4e418a730f56d3668ec4972aea19c2bd20f9061a.png)

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [2024 年 8 月 11 日午後 7:31 UTC](https://meta.discourse.org/t/linting-configuration/321051/6 "2024-08-11T19:31:20Z")

</div>

> [@gormus](#):
>
> デフォルトの設定では、`eslint-config-discourse` パッケージが devDependency としてインストールされます。

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

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

> [@Discourse](#):
>
> ## アップグレード
> 
> ```plaintext
> gem update discourse_theme
> 
> ```

---

<div class="post-metadata">

### Author: ![gormus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gormus/32/428592_2.png) [@gormus](https://meta.discourse.org/u/gormus)
#### Post date: [2024 年 8 月 11 日午後 8:12 UTC](https://meta.discourse.org/t/linting-configuration/321051/7 "2024-08-11T20:12:08Z")

</div>

> [@Discourse](#):
>
> ## アップグレード
> 
> ```plaintext
> gem update discourse_theme
> 
> ```

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

```plaintext
discourse_theme --version
2.1.2

```

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

```plaintext
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 - 指定されたディレクトリの設定をリセットします。

```

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

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [2024 年 9 月 11 日午前 8:39 UTC](https://meta.discourse.org/t/linting-configuration/321051/9 "2024-09-11T08:39:07Z")

</div>

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