11
43
Fork
You've already forked base
6

JavaScript Linter #89

Open
opened 2022年01月10日 15:57:56 +01:00 by dubst3pp4 · 14 comments

Aktuell wird kein Linter verwendet. Dieser hilft, Fehler schneller aufzufinden sowie einen einheitlichen Coding Style im gesamten Projekt zu verwenden.

Mit Hinblick auf eine Migration zu Vue3 (siehe #62) würde ein Linter die Arbeit wesentlich erleichtern.

Vorschlag:

Aktuell wird kein [Linter](https://de.wikipedia.org/wiki/Lint_(Programmierwerkzeug)) verwendet. Dieser hilft, Fehler schneller aufzufinden sowie einen einheitlichen Coding Style im gesamten Projekt zu verwenden. Mit Hinblick auf eine Migration zu Vue3 (siehe #62) würde ein Linter die Arbeit wesentlich erleichtern. **Vorschlag:** - [ ] Einbinden von [ESLint](https://eslint.org/) - [ ] Vue.js Unterstützung via [eslint-plugin-vue](https://eslint.vuejs.org/) - [ ] Festlegen eines (in der Community verbreiteten) Coding Styles, z.b. [standardJS](https://standardjs.com/) bzw. [eslint-config-standard](https://github.com/standard/eslint-config-standard)

Der Coding Style ist ja manchmal ein heikles Thema, daher ist standard nur als Vorschlag zu sehen :-)

Der Coding Style ist ja manchmal ein heikles Thema, daher ist standard nur als Vorschlag zu sehen :-)
Owner
Copy link

Wir sind liberal. Es muss in erster Linie lesbar und verständlich sein.

Interessanter sind 1 und 2. :)

Wir sind liberal. Es muss in erster Linie lesbar und verständlich sein. Interessanter sind 1 und 2. :)
Contributor
Copy link

Dank @w4ts0n bin ich auf dieses Issue aufmerksam geworden.

Die Anregung von @dubst3pp4 halte ich für eine sehr gute Idee. Ihr könntet auch überlegen, ob die lerntools dann auch den vue-client nutzen, das erspart einige Arbeit.

Und es finden sich immer verweister Code, ungenutzte Variablen etc. - obwohl @pw vor gut einem Jahr ein sehr gründliches Review vorgenommen hat 👍

Warnung: Der Aufwand ist nicht zu unterschätzen! Da die Grundlagen der lerntools vor ES6 entstanden, gibt es viel aufzuräumen...

Dank @w4ts0n bin ich auf dieses Issue aufmerksam geworden. Die Anregung von @dubst3pp4 halte ich für eine sehr gute Idee. Ihr könntet auch überlegen, ob die lerntools dann auch den vue-client nutzen, das erspart einige Arbeit. Und es finden sich immer verweister Code, ungenutzte Variablen etc. - obwohl @pw vor gut einem Jahr ein sehr gründliches Review vorgenommen hat 👍 Warnung: Der Aufwand ist nicht zu unterschätzen! Da die Grundlagen der lerntools vor ES6 entstanden, gibt es viel aufzuräumen...

Ich habe gestern bereits mal angefangen, eslint zu installieren. Die (doch relativ große) Liste an warnings und errors würde ich jetzt nach und nach einfach mal abarbeiten. Aktuell habe ich das Repo geforkt, der Branch ist hier zu finden...

Ich habe gestern bereits mal angefangen, eslint zu installieren. Die (doch relativ große) Liste an warnings und errors würde ich jetzt nach und nach einfach mal abarbeiten. Aktuell habe ich das Repo geforkt, der Branch ist [hier](https://codeberg.org/dubst3pp4/base/src/branch/89-add-eslint) zu finden...

zur Info

npm install (dev branch) weist auf fehlende peer dependendies hin:

npm WARN eslint-config-standard@16.0.3 requires a peer of eslint@^7.12.1 but none is installed. You must install peer dependencies yourself.
npm WARN eslint-config-standard@16.0.3 requires a peer of eslint-plugin-promise@^4.2.1 || ^5.0.0 but none is installed. You must install peer dependencies yourself.

zur Info npm install (dev branch) weist auf fehlende peer dependendies hin: npm WARN eslint-config-standard@16.0.3 requires a peer of eslint@^7.12.1 but none is installed. You must install peer dependencies yourself. npm WARN eslint-config-standard@16.0.3 requires a peer of eslint-plugin-promise@^4.2.1 || ^5.0.0 but none is installed. You must install peer dependencies yourself.

Warnung: Der Aufwand ist nicht zu unterschätzen! Da die Grundlagen der lerntools vor ES6 entstanden, gibt es viel aufzuräumen...

Ist mir aufgefallen 😅

Wird also künftig ESLint verwendet?
Mit Standard.js? (In der Web-Community ist Prettier beliebter, auch wenn ich ein Fan von Standard.js bin - Achtung! Prettier ist opinonated (Standard.js auch...)).

Wir könnten mit Ignores anfangen und nach und nach die Bereiche zum Linten scharf schalten.

> Warnung: Der Aufwand ist nicht zu unterschätzen! Da die Grundlagen der lerntools vor ES6 entstanden, gibt es viel aufzuräumen... Ist mir aufgefallen 😅 Wird also künftig ESLint verwendet? Mit Standard.js? (In der Web-Community ist [Prettier](https://prettier.io/) beliebter, auch wenn ich ein Fan von Standard.js bin - Achtung! Prettier ist opinonated (Standard.js auch...)). Wir könnten mit [Ignores](https://eslint.org/docs/user-guide/configuring/ignoring-code) anfangen und nach und nach die Bereiche zum Linten scharf schalten.
Contributor
Copy link

In den MintApps, die ja auf der selben Code-Basis aufsetzen habe ich mich für standard + vue3-essentials entschieden: https://codeberg.org/MintApps/client/src/branch/main/.eslintrc.js

Falls ihr es ähnlich handhabt, wäre es leichter Bausteine auszutauschen.

In den MintApps, die ja auf der selben Code-Basis aufsetzen habe ich mich für standard + vue3-essentials entschieden: https://codeberg.org/MintApps/client/src/branch/main/.eslintrc.js Falls ihr es ähnlich handhabt, wäre es leichter Bausteine auszutauschen.

Ich bin dafür, dass wir uns weiterhin eng an unser Schwesterprojekt (gleicher Papa 😉) Mintapps binden um Bausteine austauschen zu können.

Ich bin dafür, dass wir uns weiterhin eng an unser Schwesterprojekt (gleicher Papa 😉) Mintapps binden um Bausteine austauschen zu können.

Ich habe jetzt die Konfiguration von @tk100 als PR #103 vorbereitet. Dabei musste ich noch eine Abhängigkeit installieren, um Stylelint lokal ausführen zu können.

Ich habe jetzt die Konfiguration von @tk100 als PR #103 vorbereitet. Dabei musste ich noch eine Abhängigkeit installieren, um Stylelint lokal ausführen zu können.

Das dürfte jetzt in einem ersten Schritt auch in dev sein, wenn ich es richtig sehe.

Ich schlage vor, dass noch Labels ergänzt werden :-)

Ein npm run lint ist derzeit noch nicht aufgenommen, weil wir noch einige Fehler und Warnings adressieren müssen ~> In Progress?

Das dürfte jetzt in einem ersten Schritt auch in `dev` sein, wenn ich es richtig sehe. Ich schlage vor, dass noch Labels ergänzt werden :-) Ein `npm run lint` ist derzeit noch nicht aufgenommen, weil wir noch einige Fehler und Warnings adressieren müssen ~> In Progress?

@tk100 Für den Fall, dass es dir entgangen ist: ESLint stellt auf Flat Config um:

https://eslint.org/blog/2023/11/whats-coming-in-eslint-9.0.0/

Mir ist das dieses Jahr bei einem GameDev Jam über den Weg gelaufen. Ich habe den PR 187 gleich auch entsprechend angepasst:

70ef962b4a/eslint.config.js

Mögt ihr vielleicht auch in MintApps übernehmen.

@tk100 Für den Fall, dass es dir entgangen ist: ESLint stellt auf Flat Config um: https://eslint.org/blog/2023/11/whats-coming-in-eslint-9.0.0/ Mir ist das dieses Jahr bei einem GameDev Jam über den Weg gelaufen. Ich habe den PR 187 gleich auch entsprechend angepasst: https://codeberg.org/lerntools/base/src/commit/70ef962b4adf220df8d3a17134e640c39ccc0fcd/eslint.config.js Mögt ihr vielleicht auch in MintApps übernehmen.
Contributor
Copy link

Vielen Dank für den Hinweis! Ich habe aktuell zwei Probleme identifiziert:

  1. Das eslint-vue Plugin unterstützt noch keine Flat-Config. Ich würde das in den MintApps leicht anders lösen, indem ich FlatCompat aus dem Projekt nutze:
import js from '@eslint/js'
import globals from 'globals'
import { FlatCompat } from '@eslint/eslintrc'
const eslintrc = new FlatCompat()
export default [
 {
 ignores: ["node_modules", "old"]
 },
 js.configs.recommended,
 ...eslintrc.plugins('vue'),
 ...eslintrc.extends('plugin:vue/vue3-recommended'),
 {
 files: ['src/**/*.js', 'src/**/*.vue'],
 languageOptions: {
 globals: {
 ...globals.browser,
 },
 parserOptions: {
 ecmaVersion: 2021,
 sourceType: "module"
 }
 }
 }
]
  1. Das eslint Plugin für vite unterstützt auch noch keine Flat-Config. Das ist für mich aktuell ein Ausschlusskriterium, aber die Issues lassen vermuten, dass es bald etwas gibt ;-)
Vielen Dank für den Hinweis! Ich habe aktuell zwei Probleme identifiziert: 1. Das eslint-vue Plugin unterstützt noch keine Flat-Config. Ich würde das in den MintApps leicht anders lösen, indem ich FlatCompat aus dem Projekt nutze: ~~~ import js from '@eslint/js' import globals from 'globals' import { FlatCompat } from '@eslint/eslintrc' const eslintrc = new FlatCompat() export default [ { ignores: ["node_modules", "old"] }, js.configs.recommended, ...eslintrc.plugins('vue'), ...eslintrc.extends('plugin:vue/vue3-recommended'), { files: ['src/**/*.js', 'src/**/*.vue'], languageOptions: { globals: { ...globals.browser, }, parserOptions: { ecmaVersion: 2021, sourceType: "module" } } } ] ~~~ 2. Das eslint Plugin für vite unterstützt auch noch keine Flat-Config. Das ist für mich aktuell ein Ausschlusskriterium, aber die Issues lassen vermuten, dass es bald etwas gibt ;-)

Magst du die Issues verlinken, damit wir ein Auge darauf haben können?

Magst du die Issues verlinken, damit wir ein Auge darauf haben können?
Contributor
Copy link

Issues:

Pull Request:

Issues: - „Support for new flat config eslint.config.js": https://github.com/gxmari007/vite-plugin-eslint/issues/55 - „ESLint doesn‘t work with flat config": https://github.com/gxmari007/vite-plugin-eslint/issues/78 Pull Request: - „support for eslint flat configs": https://github.com/gxmari007/vite-plugin-eslint/pull/82
Sign in to join this conversation.
dev
main
dev
vue3
feature/ticket_117
weblate
master
experimental
v.0.9.1
v.0.9
v.0.8.2
v.0.8.1
v.0.8.0
v.0.7.0
0.7
v0.6.0
v0.30
v0.2.0
v0.12
v0.11
v0.1
Labels
Clear labels
Kind/Breaking
Breaking change that won't be backward compatible
Kind/Bug
Something is not working
Kind/Documentation
Documentation changes
Kind/Enhancement
Improve existing functionality
Kind/Feature
New functionality
Kind/Security
This is security issue
Kind/Testing
Issue or pull request related to testing
Priority
Critical
The priority is critical
Priority
High
The priority is high
Priority
Low
The priority is low
Priority
Medium
The priority is medium
Reviewed
Confirmed
Issue has been confirmed
Reviewed
Duplicate
This issue or pull request already exists
Reviewed
Invalid
Invalid issue
Reviewed
Won't Fix
This issue won't be fixed
Status
Abandoned
Somebody has started to work on this but abandoned work
Status
Blocked
Something is blocking this issue or pull request
Status
Need More Info
Feedback is required to reproduce issue or to continue work
Kind: Enhancement
improvement of a feature
Kind: Feature
Something totally new
Kind: Interesting for Wiki
to be saved in the wiki
Kind: invalid
Something is wrong
Kind: Question
More information is needed
Kind: Security
Relevant for security
Kind:bug
Something is not working
Priority: High
Priority: Low
Priority: Medium
Status: Contribution welcome
Contributions are very welcome, get started here
Status: Duplicate
This issue or pull request already exists
Status: External problem
There is an external problem
Status: Help wanted
Need some help
Status: In progress
Someone's working on it
Status: In review
we're testing a possible solution
Status: next release
All tested and ready for the next release
Status: Starters
This is a good task to start helping lerntools
Status: Tests neededd
Need some tests for locating the problem
Status: won't fix
This won't be fixed
vue3
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
6 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lerntools/base#89
Reference in a new issue
lerntools/base
No description provided.
Delete branch "%!s()"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?