nodejs / nodejs/node

remove redundancy in node.config schema keys

Offen
#60,904 10 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

config feature request stale
Vorherrschende Sprache
JavaScript
Sterne
122k
Forks
37.3k
Ø Merge
4 T. 2 Std.
Gemergte PRs (30 T.)
283

Beschreibung

What is the problem this feature will solve?

Notice below how in the current schema, the namespaces "test" and "watch" are redundantly specified. This is the result of mapping the CLI args as-is.

{
    "$schema": "https://nodejs.org/dist/vX.Y.Z/docs/node-config-schema.json",
    "test": {
        "test-concurrency": 3
        "test-isolation": "process"
        "test-timeout": 5000
        "test-rerun-failures": true
        "test-only": true
        "test-force-exit": false
        "test-name-pattern": "^iso"
        "test-skip-pattern": "tree$"
        "test-global-setup": "setup-module.mjs"
        "experimental-test-coverage": true
        "test-coverage-exclude": "test/**"
        "test-coverage-include": "src/**"
        "test-coverage-branches": 100
        "test-coverage-functions": 100
        "test-coverage-lines": 100
        "test-reporter": ["dot", "spec", "lcov"]
        "test-reporter-destination": ["stdout", "test.report", "lcov.info"]
        "experimental-test-module-mocks": true
        "test-update-snapshots": true
    },
    "watch": {
        "watch-preserve-output": true
        "watch-path": "./src"
    }
} 
What is the feature you are proposing to solve the problem?

Instead, the namespace part of the CLI arg could automatically be mapped to a namespace within the config schema:

{
    "$schema": "https://nodejs.org/dist/vX.Y.Z/docs/node-config-schema.json",
    "test": {
        "concurrency": 3
        "isolation": "process"
        "timeout": 5000
        "rerun-failures": true
        "only": true
        "force-exit": false
        "name-pattern": "^iso"
        "skip-pattern": "tree$"
        "global-setup": "setup-module.mjs"
        "experimental-coverage": true
        "coverage-exclude": "test/**"
        "coverage-include": "src/**"
        "coverage-branches": 100
        "coverage-functions": 100
        "coverage-lines": 100
        "reporter": ["dot", "spec", "lcov"]
        "reporter-destination": ["stdout", "test.report", "lcov.info"]
        "experimental-module-mocks": true
        "test-update-snapshots": true
    },
    "watch": {
        "preserve-output": true
        "path": "./src"
    }
} 

Note that for "experimental-" CLI args, the mapped namespace occurs after that prefix.

We can take it a step further, apply the idea recursively, as below. This has the added of benefit fixing how destinations are specified when there are multiple test reporters.

{
    "$schema": "https://nodejs.org/dist/vX.Y.Z/docs/node-config-schema.json",
    "test": {
        "concurrency": 3
        "isolation": "process"
        "timeout": 5000
        "rerun-failures": true
        "only": true
        "force-exit": false
        "name-pattern": "^iso"
        "skip-pattern": "tree$"
        "global-setup": "setup-module.mjs"
        "experimental-coverage": {
            "exclude": "test/**"
            "include": "src/**"
            "branches": 100
            "functions": 100
            "lines": 100
        }
        "reporter": {
            "dot": {"destination": "stdout"}
            "spec": {"destination": "test.report"}
            "lcov": {"destination": "lcov.info"}
        }
        "experimental-module-mocks": true
        "update-snapshots": true
    },
    "watch": {
        "preserve-output": true
        "path": "./src"
    }
} 
What alternatives have you considered?

No response

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, die Zuordnung von Node-CLI-Argumenten zum Config-Schema nachzuverfolgen und zu vergleichen, wie die aktuellen test- und watch-Schlüssel generiert werden. Die Beispiele des Issues definieren das beabsichtigte Ergebnis: Namespace-Präfixe sollten entfernt, experimentelle Optionen nach ihrem Präfix verarbeitet und verschachtelte Reporter-Ziele rekursiv zugeordnet werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript, node.js
Bereich
cli, developer-experience
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Aktiv
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.