Cli: [FEATURE] Konfigurationsstandard für alle Pakete

Erstellt am 15. Mai 2020  ·  2Kommentare  ·  Quelle: npm/cli

Ich bin mir nicht sicher, ob dies machbar ist oder in das Node.js-Repository gehört.

Was warum

Es gibt oft Fälle, in denen bestimmte Abhängigkeiten bestimmte Build-Konfigurationen erfordern, um in einer Gesamtumgebung (zum Beispiel) ordnungsgemäß zu funktionieren.

Diese Konfiguration kann eine Babel-Konfiguration, eine Webpack-Konfiguration oder eine speziell für dieses Paket angepasste Konfiguration sein.

Derzeit gibt es keine standardisierte Möglichkeit, Pakete zu konfigurieren.

Manche Leute verwenden eine Konvention, bei der sie ein Feld in package.json das nach dem Paket benannt ist, und ein Paket kann das lesen. Aber es fühlt sich nicht Standard genug an.

Wann

Wenn ein Paket eine benutzerdefinierte Konfiguration für die Laufzeit oder Buildzeit benötigt.

Woher

Wie

Es ist manchmal der Fall, dass JavaScript für bestimmte Fälle Build-Schritte benötigt. Diese Konfigurationsfunktion hätte eine optionale Option zum Erstellen von Abhängigkeiten, die an jedes Paket übergeben werden kann (ob sie native Module erstellen oder einfach JavaScript in eine niedrigere Form transpilieren).

Abhängig von der Konfiguration benötigt ein Paket möglicherweise bestimmte Abhängigkeiten, die es sonst nicht benötigen würde (zB Build-Abhängigkeiten).

Das Paketsystem wäre also intelligent genug, da es, wenn ein Benutzer eine bestimmte Paketkonfiguration hat, bestimmen kann, welche zusätzlichen Abhängigkeiten installiert werden sollen.

Vielleicht muss diese Funktion nur vom bestehenden nativen Modulsystem auf das gesamte JavaScript-System erweitert werden (auf einfache Weise sind native Module knifflig).

Dies könnte auch für Dinge wie optionale Abhängigkeiten sehr nützlich sein. Es wäre einfach, mit config anzugeben, dass eine Bibliothek (zum Beispiel) three anstelle von babylonjs . Dies würde dazu führen, dass die entsprechende Abhängigkeit installiert wird. Es ist ähnlich wie Peer-Abhängigkeiten, aber einfacher, und ein bestimmtes Paket, das von optionalen deps abhängt, hätte eine Standardmethode, um zuverlässig auf die Konfigurations-API zuzugreifen, um zu bestimmen, ob bestimmte Bedingungen angegeben sind (dies ist derzeit schwierig, und jede Cystom-Durchquerung von node_modules ist nicht- Standard in diesen Fällen).

Aktuelles Verhalten

  • n / A

Erwartetes Verhalten

  • oben auf hohem Niveau abgedeckt

Als weiteres Beispiel müssen Paketkonsumenten manchmal Paketquellen anstelle der üblichen kompilierten Ausgabe verwenden, um den Code auf unterschiedliche Weise zu kompilieren (normalerweise möchte ich dies mit Webpack tun).

Generell gibt es bei solchen Dingen Probleme, für die NPM bisher keine gängige Lösung bietet.

Wer

Paketautoren und ihre Benutzer

Verweise

  • n / A
Enhancement

Hilfreichster Kommentar

Diese Funktion wird erstaunlich sein, da Entwickler manchmal mit großen Schwierigkeiten bei der Behebung dieser Art von Problemen konfrontiert sind.

Alle 2 Kommentare

Diese Funktion würde es Paketautoren auf standardmäßige Weise ermöglichen, ihren Paketen Funktionen hinzuzufügen, bei denen sie sagen können: "Oh, Sie möchten, dass das CSS extern ist, anstatt in die üblichen Paketdateien integriert zu sein, kein Problem, fügen Sie einfach so- und-solch-Option in Ihrer Projektkonfiguration, dann wird dieses Paket automatisch jegliches CSS aus seiner Ausgabe ausschließen", und dann kann der Paketautor bei dieser Standardkonfiguration Webpack, Babel oder ein beliebiges Tool verwenden, das gewünscht wird, um das Ergebnis zu erzielen.

In diesem Sinne hätten alle Pakete eine Standardmethode, die es Benutzern ermöglicht, ihnen Optionen mitzuteilen, wobei die Optionen alternative Sätze von Abhängigkeiten oder Build-Schritten diktieren können, unabhängig davon, welche Quelldateien oder Build-Tools das Paket verwendet.

Es würde eine Konfiguration auf der Benutzerseite geben, aber solche Optionen würden einer Konfiguration auf der Paketseite zugeordnet, die Abhängigkeiten (und damit Build-Tools) diktieren würde, die während der Installation ausgeführt werden, oder ähnliches.

Ich konnte sehen, dass die meisten Pakete dann die Standardquellcodeausgabe versenden und einige Benutzer sie anpassen.

Es kommt oft vor, dass der beste Weg, um TypeScript-Quellcode mit allen Funktionen zu kompilieren, die ansonsten nicht durch die Deklarationsdatei emit eingeschränkt werden , darin besteht, rohen TypeScript-Quellcode zu versenden und ihn auf der Verbraucherseite zu transpilieren. Eine Konfigurationskonvention würde dabei sehr hilfreich sein.

TypeScript erklärt, dass Verbraucher niemals TypeScript-Quellen transpilieren sollten, aber sie haben eine Lücke gegraben, in der dies aufgrund dieses verknüpften Problems eine Notwendigkeit sein kann. Ich verwende es nur als ein Beispiel, wo ein Konfigurationsstandard von großem Nutzen sein könnte.

Diese Funktion wird erstaunlich sein, da Entwickler manchmal mit großen Schwierigkeiten bei der Behebung dieser Art von Problemen konfrontiert sind.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

ahuglajbclajep picture ahuglajbclajep  ·  3Kommentare

darcyclarke picture darcyclarke  ·  4Kommentare

theADAMJR picture theADAMJR  ·  3Kommentare

FaizenR picture FaizenR  ·  3Kommentare

goldingdamien picture goldingdamien  ·  4Kommentare