-
Notifications
You must be signed in to change notification settings - Fork 795
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(compiler): ignore TS diagnostics on builds where typedef file changes #5013
fix(compiler): ignore TS diagnostics on builds where typedef file changes #5013
Conversation
|
Path | Error Count |
---|---|
src/dev-server/index.ts | 37 |
src/mock-doc/serialize-node.ts | 36 |
src/dev-server/server-process.ts | 32 |
src/compiler/build/build-stats.ts | 27 |
src/compiler/output-targets/dist-lazy/generate-lazy-module.ts | 25 |
src/compiler/style/test/optimize-css.spec.ts | 23 |
src/testing/puppeteer/puppeteer-element.ts | 23 |
src/compiler/prerender/prerender-main.ts | 22 |
src/runtime/client-hydrate.ts | 19 |
src/screenshot/connector-base.ts | 19 |
src/runtime/vdom/vdom-render.ts | 18 |
src/compiler/config/test/validate-paths.spec.ts | 16 |
src/dev-server/request-handler.ts | 15 |
src/compiler/prerender/prerender-optimize.ts | 14 |
src/compiler/sys/stencil-sys.ts | 14 |
src/compiler/transpile/transpile-module.ts | 14 |
src/runtime/vdom/vdom-annotations.ts | 14 |
src/sys/node/node-sys.ts | 14 |
src/compiler/build/build-finish.ts | 13 |
src/compiler/prerender/prerender-queue.ts | 13 |
Our most common errors
Typescript Error Code | Count |
---|---|
TS2345 | 418 |
TS2322 | 395 |
TS18048 | 310 |
TS18047 | 101 |
TS2722 | 38 |
TS2532 | 34 |
TS2531 | 23 |
TS2454 | 14 |
TS2352 | 13 |
TS2769 | 10 |
TS2790 | 10 |
TS2538 | 8 |
TS2344 | 5 |
TS2416 | 4 |
TS2493 | 3 |
TS18046 | 2 |
TS2684 | 1 |
TS2488 | 1 |
TS2430 | 1 |
Unused exports report
There are 15 unused exports on this PR. That's the same number of errors on main, so at least we're not creating new ones!
Unused exports
File | Line | Identifier |
---|---|---|
src/runtime/bootstrap-lazy.ts | 21 | setNonce |
src/screenshot/screenshot-fs.ts | 18 | readScreenshotData |
src/testing/testing-utils.ts | 198 | withSilentWarn |
src/utils/index.ts | 145 | CUSTOM |
src/utils/index.ts | 232 | resolve |
src/utils/index.ts | 246 | normalize |
src/utils/index.ts | 7 | escapeRegExpSpecialCharacters |
src/compiler/app-core/app-data.ts | 25 | BUILD |
src/compiler/app-core/app-data.ts | 115 | Env |
src/compiler/app-core/app-data.ts | 117 | NAMESPACE |
src/compiler/fs-watch/fs-watch-rebuild.ts | 123 | updateCacheFromRebuild |
src/compiler/types/validate-primary-package-output-target.ts | 62 | satisfies |
src/compiler/types/validate-primary-package-output-target.ts | 62 | Record |
src/testing/puppeteer/puppeteer-declarations.ts | 485 | WaitForEventOptions |
src/compiler/sys/fetch/write-fetch-success.ts | 7 | writeFetchSuccessSync |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
one question!
// TODO(STENCIL-540): remove `hasTypesChanged` check and figure out how to generate types before | ||
// executing the TS build program so we don't get semantic diagnostic errors about referencing the | ||
// auto-generated `components.d.ts` file. | ||
if (config.validateTypes && !hasTypesChanged) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks like there's an emitOnlyDtsFiles
option for the .emit
callback that we call here:
possibly I'm misunderstanding the comment here - but if we ran a dts-only emit first and then the whole program would that prevent the error? Probably that would be slower so not necessarily saying we want to, more just wondering if that's indeed how it works here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think there'd still be an issue since we don't generate the components.d.ts
file until after the TS program has ran/emitted the files. What we really need to do is generate the components.d.ts
file before we run the TS program so that the file exists before the build. We can do this, just need to restructure things a bit more since we don't have the components metadata on the BuildCtx
until the build callback, at which point the TS program has already ran and generated the diagnostics. This was just intended as a quick fix to remedy the regression until we can take the step for the desired, long term solution
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ahh I think I sort of forgot that the components.d.ts
is so artisanal, makes sense!
What is the current behavior?
Building a Stencil project that uses the component starter template can result in build errors if the
src/components.d.ts
file doesn't already exist. This is because the TS program used for the build generates the semantic error diagnostics before we generate the typedef file. This bug was introduced by #4938 since we no longer early-abort before the TS diagnostics are pushed into our own diagnostics.Fixes: #4999
What is the new behavior?
This is a temporary fix to prevent the build errors without needing to early abort and revert all the changes from #4938. If the typedef file was changed, we ignore the TS diagnostics.
Does this introduce a breaking change?
Testing
Tested in a component starter by deleting the
src/components.d.ts
file before running a build.Other information