microsoft / microsoft/TypeScript
Add method host.createCustomSourceFile for custom file extensions
Dieses Issue hat noch niemand übernommen.
- 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
- Bundle systems that always take care of importing files that TS doesn't support.
- Custom language servers.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Ö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