-
Notifications
You must be signed in to change notification settings - Fork 40
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(react): correctly mark dependencies as external #2479
Conversation
🦋 Changeset detectedLatest commit: a5f6ff6 The changes in this PR will be included in the next version bump. This PR includes changesets to release 4 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Preview deployments for this pull request: Storybook - Storefront - Theme - |
Coverage Report
File CoverageNo changed files found. |
Very nice work <3 |
Make sure to remove the |
Unsure about the test app as-is because it introduces a lot of dependencies we need to maintain in the repository, ontop of having its own configs instead extending the existing one. My experience has always been to have the test-apps seperate to prevent false positives or stuff bleeds over from being a monorepo. |
491a9ad
to
530cf2a
Compare
What this really means is that we bundle a copy of the dependencies with our library. This can cause side effects with duplicate packages for our end-users. |
When we don't mark all our dependencies as external, we get stuff like this in our
The imports that start with The side effect of bundling dependencies is that
|
Jepp, bundling dependencies or having users packagemanager install them via I've experienced problems before with bundling dependencies because downstream a different version was used and they were both patching the same global or some other conflicting stuff I can't remember now. This was 5 years ago, so as long as we keep our bundling to a minimum this should be ok. My point was just that we don't want to bundle a copy of the dependencies unless absolutely needed 🙈 |
To be clear, what this PR is doing is removing all depenency bundling, not adding more dependencies to the bundle |
2ae461c
to
129b846
Compare
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.
Great work!
Good thing you put that guard in so that we avoid this being misconfigured again in the future 😓
Suggest also adding a changeset so we can get a specific entry for this in our prerelease changelog incase we need to backtrack due to some other issue.
Hmm, maybe also update the PR to better reflect the changes done 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.
Superb work 🌟
129b846
to
c19898c
Compare
This ensures Accordion works when consumers have enabled tree-shaking. Because we didn't mark all our dependencies as external, `import "@u-elements/u-details"` was tree-shaked when `@digdir/designsystemet-react` was used in an application with tree-shaking enabled. This happened because we bundled several dependencies (including this one) with our library, and our library has `"sideEffects": false`, implying that any side-effect imports that happened within our library folder was safe to remove. This was fixed by correctly marking all our dependencies as external, in which case the application's build will correctly identify `"@u-elements/u-details"` as having side-effects and thus not not remove the import. Closes #2477
c19898c
to
a5f6ff6
Compare
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to next, this PR will be updated.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ `next` is currently in **pre mode** so this branch has prereleases rather than normal releases. If you want to exit prereleases, run `changeset pre exit` on `next`.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ # Releases ## @digdir/[email protected] ### Patch Changes - Textarea: Use `field-sizing: content` ([#2463](#2463)) - ErrorSummary: Rename ErrorSummary.Root to ErrorSummary ([#2437](#2437)) - Tabs: ([#2448](#2448)) - Renames `Tabs.Root` to `Tabs` - Renames `Tabs.Content` to `Tabs.Panel` - Rename classes from `ds-error-message*` to `ds-validation-message*` ([#2473](#2473)) - Modal: css changes ([#2418](#2418)) - DropdownMenu: ([#2432](#2432)) - Rename from `DropdownMenu` to `Dropdown` - Change API and structure - Rename `.Root` to `.Context` - Rename `.Content` to `Dropdown` - Tabs: css changes ([#2431](#2431)) - ToggleGroup: Rename ToggleGroup.Root to ToggleGroup ([#2424](#2424)) - Badge: Only use single DOM element for rendering ([#2422](#2422)) - Skeleton: Replace Skeleton.Text, Skeleton.Circle and Skeleton.Rectangle with <Skeleton variant=""> ([#2435](#2435)) - Breadcrumbs: Rename `Breadcrumbs.Root` to `Breadcrumbs` and remove `Breadcrumbs.Nav` ([#2428](#2428)) - HelpText: ([#2438](#2438)) - Use Popover API - Remove `portal` prop - Render icon with pseudo element and require aria-label - Fieldset: Style using css attributes ([#2447](#2447)) ## @digdir/[email protected] ### Patch Changes - Correctly mark dependencies as external. This ensures Accordion works when consumers have enabled tree-shaking. ([#2479](#2479)) - Button: Remove `type` when `asChild={true}` ([#2472](#2472)) - ErrorSummary: Rename ErrorSummary.Root to ErrorSummary ([#2437](#2437)) - Tabs: ([#2448](#2448)) - Renames `Tabs.Root` to `Tabs` - Renames `Tabs.Content` to `Tabs.Panel` - Modal: css changes ([#2418](#2418)) - Rename `ErrorMessage` to `ValidationMessage` ([#2473](#2473)) - DropdownMenu: ([#2432](#2432)) - Rename from `DropdownMenu` to `Dropdown` - Change API and structure - Rename `.Root` to `.Context` - Rename `.Content` to `Dropdown` - Tabs: css changes ([#2431](#2431)) - ToggleGroup: Rename ToggleGroup.Root to ToggleGroup ([#2424](#2424)) - Badge: Only use single DOM element for rendering ([#2422](#2422)) - Skeleton: Replace Skeleton.Text, Skeleton.Circle and Skeleton.Rectangle with <Skeleton variant=""> ([#2435](#2435)) - Breadcrumbs: Rename `Breadcrumbs.Root` to `Breadcrumbs` and remove `Breadcrumbs.Nav` ([#2428](#2428)) - HelpText: ([#2438](#2438)) - Use Popover API - Remove `portal` prop - Render icon with pseudo element and require aria-label - Fieldset: Style using css attributes ([#2447](#2447)) ## @digdir/[email protected] ## @digdir/[email protected] Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This ensures Accordion works when consumers have enabled tree-shaking. Because we didn't mark all our dependencies as external, `import "@u-elements/u-details"` was tree-shaked when `@digdir/designsystemet-react` was used in an application with tree-shaking enabled. This happened because we bundled several dependencies (including this one) with our library, and our library has `"sideEffects": false`, implying that any side-effect imports that happened within our library folder was safe to remove. This was fixed by correctly marking all our dependencies as external, in which case the application's build will correctly identify `"@u-elements/u-details"` as having side-effects and thus not not remove the import. Closes #2477
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to next, this PR will be updated.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ `next` is currently in **pre mode** so this branch has prereleases rather than normal releases. If you want to exit prereleases, run `changeset pre exit` on `next`.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ # Releases ## @digdir/[email protected] ### Patch Changes - Textarea: Use `field-sizing: content` ([#2463](#2463)) - ErrorSummary: Rename ErrorSummary.Root to ErrorSummary ([#2437](#2437)) - Tabs: ([#2448](#2448)) - Renames `Tabs.Root` to `Tabs` - Renames `Tabs.Content` to `Tabs.Panel` - Rename classes from `ds-error-message*` to `ds-validation-message*` ([#2473](#2473)) - Modal: css changes ([#2418](#2418)) - DropdownMenu: ([#2432](#2432)) - Rename from `DropdownMenu` to `Dropdown` - Change API and structure - Rename `.Root` to `.Context` - Rename `.Content` to `Dropdown` - Tabs: css changes ([#2431](#2431)) - ToggleGroup: Rename ToggleGroup.Root to ToggleGroup ([#2424](#2424)) - Badge: Only use single DOM element for rendering ([#2422](#2422)) - Skeleton: Replace Skeleton.Text, Skeleton.Circle and Skeleton.Rectangle with <Skeleton variant=""> ([#2435](#2435)) - Breadcrumbs: Rename `Breadcrumbs.Root` to `Breadcrumbs` and remove `Breadcrumbs.Nav` ([#2428](#2428)) - HelpText: ([#2438](#2438)) - Use Popover API - Remove `portal` prop - Render icon with pseudo element and require aria-label - Fieldset: Style using css attributes ([#2447](#2447)) ## @digdir/[email protected] ### Patch Changes - Correctly mark dependencies as external. This ensures Accordion works when consumers have enabled tree-shaking. ([#2479](#2479)) - Button: Remove `type` when `asChild={true}` ([#2472](#2472)) - ErrorSummary: Rename ErrorSummary.Root to ErrorSummary ([#2437](#2437)) - Tabs: ([#2448](#2448)) - Renames `Tabs.Root` to `Tabs` - Renames `Tabs.Content` to `Tabs.Panel` - Modal: css changes ([#2418](#2418)) - Rename `ErrorMessage` to `ValidationMessage` ([#2473](#2473)) - DropdownMenu: ([#2432](#2432)) - Rename from `DropdownMenu` to `Dropdown` - Change API and structure - Rename `.Root` to `.Context` - Rename `.Content` to `Dropdown` - Tabs: css changes ([#2431](#2431)) - ToggleGroup: Rename ToggleGroup.Root to ToggleGroup ([#2424](#2424)) - Badge: Only use single DOM element for rendering ([#2422](#2422)) - Skeleton: Replace Skeleton.Text, Skeleton.Circle and Skeleton.Rectangle with <Skeleton variant=""> ([#2435](#2435)) - Breadcrumbs: Rename `Breadcrumbs.Root` to `Breadcrumbs` and remove `Breadcrumbs.Nav` ([#2428](#2428)) - HelpText: ([#2438](#2438)) - Use Popover API - Remove `portal` prop - Render icon with pseudo element and require aria-label - Fieldset: Style using css attributes ([#2447](#2447)) ## @digdir/designsystemet@1.0.0-next.34 ## @digdir/[email protected] Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This ensures Accordion works when consumers have enabled tree-shaking.
Because we didn't mark all our dependencies as external,
import "@u-elements/u-details"
was tree-shaked when@digdir/designsystemet-react
was used in an application with tree-shaking enabled.
This happened because we bundled several dependencies (including this one)
with our library, and our library has
"sideEffects": false
, implying thatany side-effect imports that happened within our library folder was safe to remove.
This was fixed by correctly marking all our dependencies as external, in
which case the application's build will correctly identify
"@u-elements/u-details"
as having side-effects and thus not not remove the import.
Closes #2477