# Linting-Konfiguration

**URL:** <https://meta.discourse.org/t/linting-configuration/321051>\
**Category:** Development\
**Tags:** development\
**Created:** [10. August 2024 um 18:45 UTC](https://meta.discourse.org/t/linting-configuration/321051 "2024-08-10T18:45:58Z")\
**Posts on this page:** 1\
**Showing post:** 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:** [10. August 2024 um 18:45 UTC](https://meta.discourse.org/t/linting-configuration/321051/1 "2024-08-10T18:45:58Z")

</div>

Ich sehe einen erheblichen Unterschied in der Standard-Linting-Konfiguration und der Art und Weise, wie sie funktionieren soll.

Die Standardkonfiguration installiert das Paket `eslint-config-discourse` als Abhängigkeit für die Entwicklung:  
[https://www.npmjs.com/package/eslint-config-discourse](https://www.npmjs.com/package/eslint-config-discourse)

Wenn ich jedoch nach dem Quellcode unter [https://github.com/discourse/eslint-config-discourse](https://github.com/discourse/eslint-config-discourse) suche, wird das Repository zu `@discourse/lint-configs` weitergeleitet; was ebenfalls ein Paket unter dem Monorepo `eslint-config-discourse` ist. Mit den enthaltenen Tests soll `eslint-config-discourse` ein Wrapper sein, aber meiner Erfahrung nach funktioniert es nicht wie erwartet:

## Standard-Linting-Konfiguration

1. Erstellen Sie ein neues Thema mit dem Befehl `discourse_theme new`.
2. Überprüfen Sie die generierte Linting-Konfiguration:  
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. Führen Sie Prettier auf dem Paket aus, und es wird sich über die `.gjs`-Dateien beschweren:

```plaintext
yarn prettier --check --write "{common,javascripts,desktop,mobile,test,scss}/**/*.{js,gjs,es6,scss}"

```

`Error: No parser could be inferred for file ... .gjs`

## Konfigurieren Sie `@discourse/lint-configs` direkt

[https://www.npmjs.com/package/@discourse/lint-configs](https://www.npmjs.com/package/@discourse/lint-configs)

1. Führen Sie `yarn remove -D eslint-config-discourse` aus, um das Paket zu deinstallieren.
2. Führen Sie `yarn add -D @discourse/lint-configs` aus, um es als Entwicklungsabhängigkeit zu installieren.
3. Befolgen Sie die Anweisungen, um Linting-Konfigurationsdateien zu erstellen:  
a. Ersetzen Sie die `.eslintrc`-Datei durch `.eslintrc.cjs`

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

```

b. Fügen Sie die Datei `.prettierrc.cjs` hinzu:

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

```

c. Ersetzen Sie die `.template-lintrc.js`-Datei durch `.template-lintrc.cjs`:

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

```

4. Versuchen Sie erneut, Prettier auszuführen, und stellen Sie fest, dass es ohne Fehler funktioniert:

```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.

```

* * *

Soll ich also davon ausgehen, dass die `discourse_theme`-CLI veraltet ist und ich in Zukunft die Option `@discourse/lint-configs` in meinen Projekten verwenden sollte?

---

_[View the full topic](https://meta.discourse.org/t/linting-configuration/321051)._
