microsoft / microsoft/TypeScript

Add method host.createCustomSourceFile for custom file extensions

Offen
#52,983 10 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Awaiting More Feedback Suggestion
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.4k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
117

Beschreibung

Suggestion

Hello, I like the new option --allowArbitraryExtensions in 5 TS, but this only works for created files on the file system or overriding a set of fs methods (readDirectory , readFile , etc).

Generating files on real time is not very efficient, so we have to override different methods so that the TS receives the created instance SourceFile without creating a file on filesystem.

I propose to add a new method createCustomSourceFile to the host, which is undefined by default, if the user has defined this method in the host, then the TS should call it for all files with extensions that the TS does not support (.css, .svg, .vue, etc).

📃 Motivating Example

host.createCustomSourceFile = function (fileName, sourceText): SourceFile {
  switch (fileName.slice(fileName.lastIndexOf('.'))) {
    case '.css':
      return ts.createSourceFile(fileName, getDtsOfCss(sourceText));

    case '.svg':
      return ts.createSourceFile(fileName, getDtsOfSvg(sourceText));
  }
};

💻 Use Cases

  1. Bundle systems that always take care of importing files that TS doesn't support.
  2. Custom language servers.

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

Das Issue nennt keine Repository-Datei und keinen Test; beginne damit, den Pfad nachzuverfolgen, über den der Host Dateien lädt, sowie die vorhandenen fs-Overrides, die mit --allowArbitraryExtensions verwendet werden. Vergleiche, wie nicht unterstützte Erweiterungen behandelt werden, und definiere anschließend das Verhalten der Host-API und die Tests für einen optionalen createCustomSourceFile-Callback, der SourceFile-Instanzen liefert, ohne Dateien im Dateisystem zu erstellen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
api, compilers
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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