-
Notifications
You must be signed in to change notification settings - Fork 784
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
chore(scripts): swap from rollup to esbuild for main build #5420
Conversation
|
Path | Error Count |
---|---|
src/dev-server/index.ts | 37 |
src/dev-server/server-process.ts | 32 |
src/compiler/prerender/prerender-main.ts | 22 |
src/testing/puppeteer/puppeteer-element.ts | 22 |
src/runtime/client-hydrate.ts | 20 |
src/screenshot/connector-base.ts | 19 |
src/runtime/vdom/vdom-render.ts | 17 |
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/sys/node/node-sys.ts | 14 |
src/compiler/prerender/prerender-queue.ts | 13 |
src/compiler/sys/in-memory-fs.ts | 13 |
src/runtime/connected-callback.ts | 13 |
src/runtime/set-value.ts | 13 |
src/compiler/output-targets/output-www.ts | 12 |
src/compiler/transformers/test/parse-vdom.spec.ts | 12 |
src/compiler/transformers/transform-utils.ts | 12 |
src/mock-doc/test/attribute.spec.ts | 12 |
Our most common errors
Typescript Error Code | Count |
---|---|
TS2322 | 361 |
TS2345 | 349 |
TS18048 | 201 |
TS18047 | 82 |
TS2722 | 37 |
TS2532 | 24 |
TS2531 | 21 |
TS2454 | 14 |
TS2790 | 11 |
TS2352 | 10 |
TS2769 | 8 |
TS2538 | 8 |
TS2416 | 6 |
TS2493 | 3 |
TS18046 | 2 |
TS2684 | 1 |
TS2430 | 1 |
Unused exports report
There are 14 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 | 269 | 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 | 61 | satisfies |
src/compiler/types/validate-primary-package-output-target.ts | 61 | Record |
src/testing/puppeteer/puppeteer-declarations.ts | 485 | WaitForEventOptions |
src/compiler/sys/fetch/write-fetch-success.ts | 7 | writeFetchSuccessSync |
PR built and packed!Download the tarball here: https://github.com/ionic-team/stencil/actions/runs/8100518507/artifacts/1286871972 If your browser saves files to
|
One question I have with this PR for the team: does it make sense for us to keep the nightly and dev releases on Rollup, or to also swap them over to Esbuild? Right now they are using Esbuild since they use the |
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.
Changes LGTM - I think everything here should work; Prod releases still appear to use rollup (as we intended) and this shouldn't require any changes to our status checks in CI, nice!
Only ask here is that we manually kick off a dev and nightly build based on this branch just to kick the tires/make sure everything works as expected. Can you run both workflows and post the results/runs in the PR summary?
yeah good idea, PR summary updated with links to the gh actions runs for those |
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, non-blocking if not needed
"build": "npm run tsc.scripts && npm run tsc.prod && npm run rollup.prod.ci", | ||
"build.esbuild": "npm run clean && npm run tsc.scripts && npm run tsc.prod && node scripts/build/esbuild/build.js --prod --ci", | ||
"build.esbuild.watch": "npm run build.esbuild -- --watch", | ||
"build.rollup": "npm run tsc.scripts && npm run tsc.prod && npm run rollup.prod.ci", |
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.
Do we need npm run clean
at the start of this?
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 don't think so, since the Rollup build clears out the directories here:
Lines 44 to 52 in 1eec9a8
await Promise.all([ | |
emptyDir(opts.output.cliDir), | |
emptyDir(opts.output.compilerDir), | |
emptyDir(opts.output.devServerDir), | |
emptyDir(opts.output.internalDir), | |
emptyDir(opts.output.mockDocDir), | |
emptyDir(opts.output.sysNodeDir), | |
emptyDir(opts.output.testingDir), | |
]); |
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.
Ah, but does it clear out the output from npm run tsc.scripts
?
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 does not - went ahead and just added it because why not
although I'll point out this is our current build script, so we're currently not clearing out scripts/
stuff between builds
although 🤔 maybe that's intentional so that the caching business that happens in there sticks around?
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.
Yeah, exactly - I typically run it (clean
) whenever I switch branches locally (npm run clean && npm ci && npm run build
), but it does slow down some overall build time
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.
yeah, ok I'm going to go ahead and leave the command as it is on main
for now
4664b01
to
bee40b9
Compare
This swaps over from Rollup to Esbuild for the main `npm run build` script in `package.json`. The existing Rollup based script is preserved as `build.rollup`. This change causes our main CI run (`.github/workflows/main.yml`) to now use the Esbuild-based build, so the existing, supplemental CI run which previously was based on the Esbuild-based build pipeline now uses the 'legacy' (or nearly so) Rollup-based version. This requires a bit of renaming and so on. STENCIL-1016
be24241
to
5f2237a
Compare
This swaps over from Rollup to Esbuild for the main
npm run build
script inpackage.json
. The existing Rollup based script is preserved asbuild.rollup
.This change causes our main CI run (
.github/workflows/main.yml
) to now use the Esbuild-based build, so the existing, supplemental CI run which previously was based on the Esbuild-based build pipeline now uses the 'legacy' (or nearly so) Rollup-based version. This requires a bit of renaming and so on.STENCIL-1016
What is the current behavior?
GitHub Issue Number: N/A
What is the new behavior?
Documentation
Does this introduce a breaking change?
Testing
To test this out in the context of our GH-based releases I ran the dev and nightly releases against this branch:
Both builds finished without error. The versions look crazily similar:
4.12.4-dev.1709157324.4664b01
4.12.4-dev.1709157393.4664b01