microsoft / microsoft/TypeScript
Allow `--noCheck` on the CLI with top-level `--build`
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.4k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
Descripción
Review comments on #57934 are mostly concerned with --build usage - as an internal option that errors on the CLI/in a config, it can't currently be used with --build without reaching at nonpublic API internals, which also make it difficult to test in a realistic way. That PR adds some psuedo-build tests that baseline current behavior (along the lines of "how will this work once actually exposed"), but current usage is definitely at-your-own-risk (we may even still rename it before it's exposed 😆) - hopefully that's evident by it being @internal. Specifically, @sheetalkamat has expressed concerns that forcibly running a noCheck build via the API (again, nonpublic, unsupported) and then a normal build on the CLI with --build may not work correctly (in that it may not calculate new diagnostics, since outputs are newer than inputs, and the CLI is unaware the last build was run with differing options). This issue with --build on the CLI and other non---build builds (without --incremental) isn't terribly --noCheck specific, and isn't something you should do - but you may be tempted to do because --noCheck is so useful. Just... don't? Wait for us, please. Our @internals are @internal for a reason. 😅
In the future PR where we make it CLI-accessible (after we enable it for JS emit), we should:
- Ensure it has an appropriate level of
.buildinfoinvalidation (which should just be the usualtscWatchstyle tests and accompanying option description fields, probably, though maybe further optimizations are available).
Additionally, we should:
- Make changes to
--buildas a whole to allow semantic-affecting diagnostics like--noCheckglobally in a project - this is a fairly independent fix, but has much more value with flags like--noCheckthat meaningfully change the compiler's performance profile, and seems to require always emitting a.buildinfofor a build, even when it's not incremental, so we at least know the options that last build was made with and if changes to them cause more invalidation than the timestamps otherwise imply. Hopefully our solution here also applies to any API-made builds (in that they should probably also make a.buildinfo), at least through appropriate API layers (we have many). I don't know if this should be a prerequisite to public CLI--noCheck, but it would certainly be nice to have, and many usecases for--noCheckwould be unlocked (or made less footgun-y) by this fix.
Those two parts (exposing --noCheck publicly on the CLI and changing --build to invalidate based on options in .buildinfo even when --incremental is false) are likely independent units of future work without a hard dependency on one another, but both are what you want to see to call this issue complete.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza revisando las pruebas existentes de estilo --build y tscWatch, junto con los campos de descripción de la opción .buildinfo mencionados en la issue. Traza cómo las compilaciones de CLI registran las opciones e invalidan las salidas, incluidas las compilaciones creadas mediante la API. Se considera terminado cuando --noCheck se puede usar públicamente con un --build de nivel superior y los cambios de opciones activan la invalidación requerida incluso sin --incremental.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- typescript
- Área
- build-system, cli, compilers
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100