microsoft / microsoft/TypeScript

Write typescript as modules, but output js without modules

Ouverte
#39,446 8 commentaires 17 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Awaiting More Feedback Suggestion
Langage dominant
Go
Étoiles
111k
Forks
14.3k
Merge moyen
2 j 4 h
PR mergées (30 j)
132

Description

Search Terms

Searched the whole internet for anything like it, only webpack and browserify related 'solutions' are proposed.

Suggestion

Split module options in tsconfig so typescript modules could be set separately from output target modules.

Use Cases

Our usecase:

  • We have a huge codebase, and we want to slowly move to typescript.
  • We have a sophisticated build system that we don't want to change - we want typescript to transpile to js and to take js and continue to use it as we were.
  • We don't need nor want to use modules in js. We never used modules - we have our system of imports, minification,
    versioning, caching, etc.
  • The only reason why we need to use modules in typescript is tsc incremental watch build. With no modules, it builds complete codebase on each change. We want to build only file changed and dependent files.

So currently we have two bad options - don't use modules (unacceptably slow build time) or use modules (get the output that we don't want). Currently we 'mitigate' the issue by removing parts of js tsc has output (removing stuff we recognize as related to exports and require), but that's just terrible.

Even worse, even if we were to use modules, require / exports are inlined even in output we want to inline to index.html as critical JS...

Examples

I guess I explained it all above.

Checklist

My suggestion meets these guidelines:

  • [ * ] This wouldn't be a breaking change in existing TypeScript/JavaScript code
  • [ * ] This wouldn't change the runtime behavior of existing JavaScript code
  • [ * ] This could be implemented without emitting different JS based on the types of the expressions
  • [ * ] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, etc.)
  • [ * ] This feature would agree with the rest of TypeScript's Design Goals.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par examiner les options de module de tsconfig et le comportement de la compilation incrémentielle en mode watch décrit dans l’issue. Déterminez comment les paramètres distincts du module source et du module émis doivent interagir, puis vérifiez que TypeScript peut émettre du JavaScript non modulaire tout en conservant des compilations incrémentielles basées sur les modules.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, typescript
Domaine
build-system, compilers
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.