fix(compiler): support rollup's external input option
Pluck the external option from the stencil config and pass it through to rollup.
Pull request checklist
Please check if your PR fulfills the following requirements:
- [X] Tests for the changes have been added (for bug fixes / features)
- [X] Docs have been reviewed and added / updated if needed (for bug fixes / features)
- [X] Build (
npm run build) was run locally and any changes were pushed - [X] Unit tests (
npm test) were run locally and passed - [X] E2E Tests (
npm run test.karma.prod) were run locally and passed - [ ] Prettier (
npm run prettier) was run locally and passed
Pull request type
Please check the type of change your PR introduces:
- [X] Bugfix
- [ ] Feature
- [ ] Refactoring (no functional changes, no api changes)
- [ ] Build related changes
- [ ] Documentation content changes
- [ ] Other (please describe):
What is the current behavior?
GitHub Issue Number: https://github.com/ionic-team/stencil/issues/3226
What is the new behavior?
The external option is now supported and works when added to the rollupConfig.inputOptions
Does this introduce a breaking change?
- [ ] Yes
- [X] No
Testing
In my project (private - sorry) which has a complex set of module dependencies I can see that the desired module is no longer included in the stencil output.
Other information
Thanks for this PR! I see the accompanying issue and have labeled this PR for the team to take a look at both a little more closely.
@rwaskiewicz Do you have an update on the process for this PR ? Any outstanding questions or issues?
@awk I think the next steps for this PR is for the team to sit down and review the PR. Specifically, we'll be looking at the changes and convincing ourselves that it doesn't conflict with any internal rollup configuration Stencil currently does. While I can't promise an exact timeline, we'll take a look as soon as we get a chance!
In the mean time, I've enabled the rest of CI to run for this PR to make sure the rest of our checks pass
@rwaskiewicz Are there any updates on @awk 's PR? This would also be a very important feature for a project we're developing
This would be nice to include. The current workaround I'm using is based on this but with a slight modification:
rollupPlugins: {
before: [
{
name: 'overwrite-rollup-options',
options: (options: RollupInputOptions) => ({
...options,
external: ['@package/identifier']
})
}
]
},
@stencil/[email protected] ts tsc --noEmit --project scripts/tsconfig.json && tsx scripts/tech-debt-burndown-report.ts
--strictNullChecks error report
Typechecking with --strictNullChecks resulted in 1077 errors on this branch.
Unfortunately, it looks like that's an increase of 1 over main 😞.
Violations Not on `main` (may be more than the count above)
| Path | Location | Error | Message |
|---|---|---|---|
| src/compiler/bundle/bundle-output.ts | (155, 15) | TS18048 | |
| src/compiler/bundle/bundle-output.ts | (170, 24) | TS18048 |
reports and statistics
Our most error-prone files
| Path | Error Count |
|---|---|
| src/dev-server/index.ts | 37 |
| src/dev-server/server-process.ts | 32 |
| src/compiler/prerender/prerender-main.ts | 22 |
| src/runtime/vdom/vdom-render.ts | 22 |
| src/runtime/client-hydrate.ts | 20 |
| src/runtime/vdom/test/patch.spec.ts | 19 |
| src/runtime/vdom/test/util.spec.ts | 19 |
| src/screenshot/connector-base.ts | 19 |
| src/testing/puppeteer/puppeteer-element.ts | 19 |
| src/dev-server/request-handler.ts | 15 |
| src/runtime/connected-callback.ts | 15 |
| src/compiler/prerender/prerender-optimize.ts | 14 |
| src/compiler/sys/stencil-sys.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/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 |
Our most common errors
| Typescript Error Code | Count |
|---|---|
| TS2322 | 338 |
| TS2345 | 329 |
| TS18048 | 186 |
| TS18047 | 99 |
| TS2722 | 27 |
| TS2532 | 23 |
| TS2531 | 19 |
| TS2790 | 11 |
| TS2454 | 10 |
| TS2352 | 9 |
| TS2769 | 8 |
| TS2416 | 7 |
| TS2538 | 4 |
| TS2493 | 3 |
| TS18046 | 2 |
| TS2684 | 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 | 22 | 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 | 245 | NODE_TYPES |
| 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 | 116 | Env |
| src/compiler/app-core/app-data.ts | 118 | NAMESPACE |
| src/compiler/fs-watch/fs-watch-rebuild.ts | 123 | updateCacheFromRebuild |
| src/compiler/types/validate-primary-package-output-target.ts | 82 | satisfies |
| src/compiler/types/validate-primary-package-output-target.ts | 82 | Record |
| src/testing/puppeteer/puppeteer-declarations.ts | 496 | 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/9649230180/artifacts/1632575740
If your browser saves files to ~/Downloads you can install it like so:
unzip -d ~/Downloads ~/Downloads/stencil-core-4.18.3-dev.1719247795.f2c0cbd.tgz.zip && npm install ~/Downloads/stencil-core-4.18.3-dev.1719247795.f2c0cbd.tgz
Add docs for this option in https://github.com/ionic-team/stencil-site/pull/1453