Skip to content

Try npm install-strategy=nested#75213

Draft
manzoorwanijk wants to merge 10 commits intotrunkfrom
update/set-npm-install-strategy
Draft

Try npm install-strategy=nested#75213
manzoorwanijk wants to merge 10 commits intotrunkfrom
update/set-npm-install-strategy

Conversation

@manzoorwanijk
Copy link
Member

@manzoorwanijk manzoorwanijk commented Feb 4, 2026

What?

Sets npm's install-strategy to "nested" in .npmrc, so that each workspace package gets its own node_modules with its declared dependencies, rather than relying on hoisted packages at the root.

Why?

Gutenberg currently uses npm's default hoisted install strategy, which allows packages to implicitly depend on modules hoisted to the root node_modules — so-called "phantom dependencies." This makes it easy to use a package without declaring it in package.json, leading to breakage when dependency trees change.

Switching to nested installs catches these phantom dependencies by ensuring each workspace resolves from its own node_modules. Note that npm's nested strategy still hoists workspace packages and common dependencies to the root when all consumers agree on the same version — it is not as strict as pnpm's isolated node_modules, but it is a meaningful improvement over the current situation.

This is intended as a temporary workaround until the full pnpm migration (#74689), for which the Make Core proposal (requested by community members) is in progress. While not as strict as pnpm, it is an improvement over the current setup:

  • Catches undeclared dependencies in workspace packages.
  • Surfaces missing dependencies / devDependencies entries early.
  • Reduces the risk of accidental breakage from hoisting changes.
  • Prepares the codebase for stricter isolation under pnpm.

Since npm's nested strategy still hoists workspace packages and common dependencies to the root, any dependency in the root package.json remains available to all workspaces as a phantom dependency. Combined with #75041 — which converts tools/ and test/ directories into workspace packages and reduces root devDependencies from 81 to only essential shared tools — this becomes significantly more effective: fewer root dependencies means fewer phantom dependencies available for accidental use.

How?

Why nested and not linked?

npm offers another strategy — install-strategy = "linked" — which would be closer to pnpm's strict isolation. Unfortunately, it has a known bug that breaks scoped packages: it strips the scope from the directory name, turning e.g. node_modules/@wordpress/core-data into node_modules/core-data, which causes resolution failures across the board. Until that is fixed, nested is the most viable option.

.npmrc changes (install-strategy docs)

  • install-strategy = "nested" — each workspace gets its own node_modules.
  • strict-peer-deps = true — fail on unmet peer dependencies.

Lockfile regeneration

npm has a known bug where changing the install strategy in .npmrc does not restructure an existing lockfile — the old hoisted layout is preserved until the lockfile is deleted and regenerated. However, deleting and regenerating the lockfile causes version drift (dependencies resolve to their latest versions), which breaks snapshot tests and can introduce subtle behavioral changes.

To work around this, the lockfile was rebuilt with the help of Claude Code, which iteratively developed a script to delete and regenerate the lockfile while preserving trunk's resolved versions. The approach uses temporary npm overrides for ~2,000 transitive dependencies to pin them during regeneration, then restores the original package.json files and patches the lockfile to keep the original dependency ranges. Several edge cases had to be handled (alias packages, non-npm tarballs, multi-major packages, root vs. workspace override conflicts).

Dependency fixes

Several workspace packages had missing or incorrect dependency declarations that were masked by hoisting. These have been fixed:

  • Added missing dependencies and devDependencies entries across multiple packages.
  • Fixed ESLint-related dependency declarations.
  • Updated TypeScript typeRoots to include ./node_modules/@types for nested resolution.

Patch updates

patch-package patch file paths use ++ as the separator for nested node_modules paths (instead of + for hoisted). Existing patches have been updated accordingly.

Storybook

Testing Instructions

  1. Delete node_modules and package-lock.json.
  2. Check out the lockfile from this branch: git checkout update/set-npm-install-strategy -- package-lock.json
  3. Run npm install — should complete without errors.
  4. Run npm run test:unit -- packages/components — all snapshot tests should pass (no vendor-prefix drift).
  5. Run npm run build — should complete successfully.
  6. Verify that workspace packages have their own node_modules:
    ls packages/components/node_modules/framer-motion  # should exist
    

@manzoorwanijk manzoorwanijk self-assigned this Feb 4, 2026
@manzoorwanijk manzoorwanijk added the [Type] Code Quality Issues or PRs that relate to code quality label Feb 4, 2026
@github-actions github-actions bot added [Package] Core data /packages/core-data [Package] Components /packages/components [Package] Redux Routine /packages/redux-routine [Package] Notices /packages/notices [Package] Priority Queue /packages/priority-queue [Package] Theme /packages/theme labels Feb 4, 2026
@github-actions
Copy link

github-actions bot commented Feb 4, 2026

Size Change: +17.4 kB (+0.25%)

Total Size: 6.86 MB

Filename Size Change
build/modules/boot/index.min.js 14.8 kB +22 B (+0.15%)
build/modules/vips/worker.min.js 3.81 MB -6 B (0%)
build/modules/workflow/index.min.js 18.9 kB -992 B (-4.99%)
build/scripts/block-editor/index.min.js 330 kB +2.24 kB (+0.68%)
build/scripts/block-library/index.min.js 305 kB -1.17 kB (-0.38%)
build/scripts/commands/index.min.js 19.2 kB -965 B (-4.78%)
build/scripts/components/index.min.js 275 kB +9.72 kB (+3.67%)
build/scripts/edit-post/index.min.js 16.3 kB +33 B (+0.2%)
build/scripts/edit-site/index.min.js 247 kB +3.1 kB (+1.27%)
build/scripts/edit-widgets/index.min.js 20 kB +62 B (+0.31%)
build/scripts/editor/index.min.js 353 kB +5.15 kB (+1.48%)
build/scripts/media-utils/index.min.js 73.1 kB +155 B (+0.21%)
ℹ️ View Unchanged
Filename Size
build/modules/a11y/index.min.js 355 B
build/modules/abilities/index.min.js 42.3 kB
build/modules/block-editor/utils/fit-text-frontend.min.js 617 B
build/modules/block-library/accordion/view.min.js 779 B
build/modules/block-library/file/view.min.js 346 B
build/modules/block-library/form/view.min.js 528 B
build/modules/block-library/image/view.min.js 2.64 kB
build/modules/block-library/navigation/view.min.js 1.12 kB
build/modules/block-library/playlist/view.min.js 418 B
build/modules/block-library/query/view.min.js 518 B
build/modules/block-library/search/view.min.js 498 B
build/modules/block-library/tabs/view.min.js 946 B
build/modules/core-abilities/index.min.js 892 B
build/modules/edit-site-init/index.min.js 2.13 kB
build/modules/interactivity-router/full-page.min.js 451 B
build/modules/interactivity-router/index.min.js 11.6 kB
build/modules/interactivity/index.min.js 15 kB
build/modules/latex-to-mathml/index.min.js 56.5 kB
build/modules/latex-to-mathml/loader.min.js 131 B
build/modules/lazy-editor/index.min.js 13.2 kB
build/modules/route/index.min.js 25 kB
build/modules/vips/loader.min.js 127 B
build/scripts/a11y/index.min.js 1.06 kB
build/scripts/annotations/index.min.js 2.39 kB
build/scripts/api-fetch/index.min.js 2.83 kB
build/scripts/autop/index.min.js 2.18 kB
build/scripts/base-styles/index.min.js 98 B
build/scripts/blob/index.min.js 631 B
build/scripts/block-directory/index.min.js 8.03 kB
build/scripts/block-serialization-default-parser/index.min.js 1.16 kB
build/scripts/block-serialization-spec-parser/index.min.js 3.08 kB
build/scripts/blocks/index.min.js 56.7 kB
build/scripts/compose/index.min.js 13.9 kB
build/scripts/core-commands/index.min.js 4.31 kB
build/scripts/core-data/index.min.js 27.8 kB
build/scripts/customize-widgets/index.min.js 12.3 kB
build/scripts/data-controls/index.min.js 795 B
build/scripts/data/index.min.js 9.64 kB
build/scripts/date/index.min.js 23.6 kB
build/scripts/deprecated/index.min.js 756 B
build/scripts/dom-ready/index.min.js 476 B
build/scripts/dom/index.min.js 4.98 kB
build/scripts/element/index.min.js 5.2 kB
build/scripts/escape-html/index.min.js 587 B
build/scripts/format-library/index.min.js 10.7 kB
build/scripts/hooks/index.min.js 1.83 kB
build/scripts/html-entities/index.min.js 494 B
build/scripts/i18n/index.min.js 2.46 kB
build/scripts/is-shallow-equal/index.min.js 572 B
build/scripts/keyboard-shortcuts/index.min.js 1.57 kB
build/scripts/keycodes/index.min.js 1.56 kB
build/scripts/list-reusable-blocks/index.min.js 2.44 kB
build/scripts/notices/index.min.js 1.9 kB
build/scripts/nux/index.min.js 1.89 kB
build/scripts/patterns/index.min.js 7.75 kB
build/scripts/plugins/index.min.js 2.15 kB
build/scripts/preferences-persistence/index.min.js 2.15 kB
build/scripts/preferences/index.min.js 3.3 kB
build/scripts/primitives/index.min.js 1.01 kB
build/scripts/priority-queue/index.min.js 1.62 kB
build/scripts/private-apis/index.min.js 1.08 kB
build/scripts/react-i18n/index.min.js 833 B
build/scripts/redux-routine/index.min.js 3.37 kB
build/scripts/reusable-blocks/index.min.js 2.92 kB
build/scripts/rich-text/index.min.js 13.9 kB
build/scripts/router/index.min.js 5.96 kB
build/scripts/server-side-render/index.min.js 1.91 kB
build/scripts/shortcode/index.min.js 1.59 kB
build/scripts/style-engine/index.min.js 2.36 kB
build/scripts/sync/index.min.js 36.8 kB
build/scripts/theme/index.min.js 21.9 kB
build/scripts/token-list/index.min.js 739 B
build/scripts/undo-manager/index.min.js 918 B
build/scripts/upload-media/index.min.js 7.45 kB
build/scripts/url/index.min.js 3.98 kB
build/scripts/vendors/react-dom.min.js 43.2 kB
build/scripts/vendors/react-jsx-runtime.min.js 667 B
build/scripts/vendors/react.min.js 2.77 kB
build/scripts/viewport/index.min.js 1.21 kB
build/scripts/warning/index.min.js 454 B
build/scripts/widgets/index.min.js 7.8 kB
build/scripts/wordcount/index.min.js 1.04 kB
build/styles/base-styles/admin-schemes-rtl.css 1.71 kB
build/styles/base-styles/admin-schemes-rtl.min.css 775 B
build/styles/base-styles/admin-schemes.css 1.71 kB
build/styles/base-styles/admin-schemes.min.css 775 B
build/styles/block-directory/style-rtl.css 1.96 kB
build/styles/block-directory/style-rtl.min.css 1.05 kB
build/styles/block-directory/style.css 1.97 kB
build/styles/block-directory/style.min.css 1.05 kB
build/styles/block-editor/content-rtl.css 5.47 kB
build/styles/block-editor/content-rtl.min.css 4.04 kB
build/styles/block-editor/content.css 5.46 kB
build/styles/block-editor/content.min.css 4.03 kB
build/styles/block-editor/default-editor-styles-rtl.css 697 B
build/styles/block-editor/default-editor-styles-rtl.min.css 224 B
build/styles/block-editor/default-editor-styles.css 697 B
build/styles/block-editor/default-editor-styles.min.css 224 B
build/styles/block-editor/style-rtl.css 18.3 kB
build/styles/block-editor/style-rtl.min.css 15.7 kB
build/styles/block-editor/style.css 18.3 kB
build/styles/block-editor/style.min.css 15.7 kB
build/styles/block-library/accordion-heading/style-rtl.css 346 B
build/styles/block-library/accordion-heading/style-rtl.min.css 325 B
build/styles/block-library/accordion-heading/style.css 346 B
build/styles/block-library/accordion-heading/style.min.css 325 B
build/styles/block-library/accordion-item/style-rtl.css 239 B
build/styles/block-library/accordion-item/style-rtl.min.css 180 B
build/styles/block-library/accordion-item/style.css 238 B
build/styles/block-library/accordion-item/style.min.css 180 B
build/styles/block-library/accordion-panel/style-rtl.css 110 B
build/styles/block-library/accordion-panel/style-rtl.min.css 99 B
build/styles/block-library/accordion-panel/style.css 110 B
build/styles/block-library/accordion-panel/style.min.css 99 B
build/styles/block-library/accordion/style-rtl.css 69 B
build/styles/block-library/accordion/style-rtl.min.css 62 B
build/styles/block-library/accordion/style.css 69 B
build/styles/block-library/accordion/style.min.css 62 B
build/styles/block-library/archives/style-rtl.css 101 B
build/styles/block-library/archives/style-rtl.min.css 90 B
build/styles/block-library/archives/style.css 101 B
build/styles/block-library/archives/style.min.css 90 B
build/styles/block-library/audio/editor-rtl.css 166 B
build/styles/block-library/audio/editor-rtl.min.css 149 B
build/styles/block-library/audio/editor.css 166 B
build/styles/block-library/audio/editor.min.css 151 B
build/styles/block-library/audio/style-rtl.css 945 B
build/styles/block-library/audio/style-rtl.min.css 132 B
build/styles/block-library/audio/style.css 945 B
build/styles/block-library/audio/style.min.css 132 B
build/styles/block-library/audio/theme-rtl.css 967 B
build/styles/block-library/audio/theme-rtl.min.css 134 B
build/styles/block-library/audio/theme.css 967 B
build/styles/block-library/audio/theme.min.css 134 B
build/styles/block-library/avatar/editor-rtl.css 127 B
build/styles/block-library/avatar/editor-rtl.min.css 115 B
build/styles/block-library/avatar/editor.css 127 B
build/styles/block-library/avatar/editor.min.css 115 B
build/styles/block-library/avatar/style-rtl.css 117 B
build/styles/block-library/avatar/style-rtl.min.css 104 B
build/styles/block-library/avatar/style.css 117 B
build/styles/block-library/avatar/style.min.css 104 B
build/styles/block-library/breadcrumbs/style-rtl.css 233 B
build/styles/block-library/breadcrumbs/style-rtl.min.css 203 B
build/styles/block-library/breadcrumbs/style.css 233 B
build/styles/block-library/breadcrumbs/style.min.css 203 B
build/styles/block-library/button/editor-rtl.css 306 B
build/styles/block-library/button/editor-rtl.min.css 265 B
build/styles/block-library/button/editor.css 317 B
build/styles/block-library/button/editor.min.css 265 B
build/styles/block-library/button/style-rtl.css 609 B
build/styles/block-library/button/style-rtl.min.css 554 B
build/styles/block-library/button/style.css 622 B
build/styles/block-library/button/style.min.css 554 B
build/styles/block-library/buttons/editor-rtl.css 391 B
build/styles/block-library/buttons/editor-rtl.min.css 291 B
build/styles/block-library/buttons/editor.css 391 B
build/styles/block-library/buttons/editor.min.css 291 B
build/styles/block-library/buttons/style-rtl.css 452 B
build/styles/block-library/buttons/style-rtl.min.css 349 B
build/styles/block-library/buttons/style.css 453 B
build/styles/block-library/buttons/style.min.css 349 B
build/styles/block-library/calendar/style-rtl.css 271 B
build/styles/block-library/calendar/style-rtl.min.css 239 B
build/styles/block-library/calendar/style.css 271 B
build/styles/block-library/calendar/style.min.css 239 B
build/styles/block-library/categories/editor-rtl.css 171 B
build/styles/block-library/categories/editor-rtl.min.css 132 B
build/styles/block-library/categories/editor.css 170 B
build/styles/block-library/categories/editor.min.css 131 B
build/styles/block-library/categories/style-rtl.css 226 B
build/styles/block-library/categories/style-rtl.min.css 169 B
build/styles/block-library/categories/style.css 235 B
build/styles/block-library/categories/style.min.css 169 B
build/styles/block-library/classic-rtl.css 363 B
build/styles/block-library/classic-rtl.min.css 321 B
build/styles/block-library/classic.css 363 B
build/styles/block-library/classic.min.css 321 B
build/styles/block-library/code/editor-rtl.css 59 B
build/styles/block-library/code/editor-rtl.min.css 53 B
build/styles/block-library/code/editor.css 59 B
build/styles/block-library/code/editor.min.css 53 B
build/styles/block-library/code/style-rtl.css 158 B
build/styles/block-library/code/style-rtl.min.css 139 B
build/styles/block-library/code/style.css 179 B
build/styles/block-library/code/style.min.css 139 B
build/styles/block-library/code/theme-rtl.css 135 B
build/styles/block-library/code/theme-rtl.min.css 122 B
build/styles/block-library/code/theme.css 135 B
build/styles/block-library/code/theme.min.css 122 B
build/styles/block-library/columns/editor-rtl.css 119 B
build/styles/block-library/columns/editor-rtl.min.css 108 B
build/styles/block-library/columns/editor.css 119 B
build/styles/block-library/columns/editor.min.css 108 B
build/styles/block-library/columns/style-rtl.css 1.3 kB
build/styles/block-library/columns/style-rtl.min.css 421 B
build/styles/block-library/columns/style.css 1.3 kB
build/styles/block-library/columns/style.min.css 421 B
build/styles/block-library/comment-author-avatar/editor-rtl.css 136 B
build/styles/block-library/comment-author-avatar/editor-rtl.min.css 124 B
build/styles/block-library/comment-author-avatar/editor.css 136 B
build/styles/block-library/comment-author-avatar/editor.min.css 124 B
build/styles/block-library/comment-author-name/style-rtl.css 79 B
build/styles/block-library/comment-author-name/style-rtl.min.css 72 B
build/styles/block-library/comment-author-name/style.css 79 B
build/styles/block-library/comment-author-name/style.min.css 72 B
build/styles/block-library/comment-content/style-rtl.css 137 B
build/styles/block-library/comment-content/style-rtl.min.css 120 B
build/styles/block-library/comment-content/style.css 137 B
build/styles/block-library/comment-content/style.min.css 120 B
build/styles/block-library/comment-date/style-rtl.css 72 B
build/styles/block-library/comment-date/style-rtl.min.css 65 B
build/styles/block-library/comment-date/style.css 72 B
build/styles/block-library/comment-date/style.min.css 65 B
build/styles/block-library/comment-edit-link/style-rtl.css 77 B
build/styles/block-library/comment-edit-link/style-rtl.min.css 70 B
build/styles/block-library/comment-edit-link/style.css 77 B
build/styles/block-library/comment-edit-link/style.min.css 70 B
build/styles/block-library/comment-reply-link/style-rtl.css 78 B
build/styles/block-library/comment-reply-link/style-rtl.min.css 71 B
build/styles/block-library/comment-reply-link/style.css 78 B
build/styles/block-library/comment-reply-link/style.min.css 71 B
build/styles/block-library/comment-template/style-rtl.css 213 B
build/styles/block-library/comment-template/style-rtl.min.css 191 B
build/styles/block-library/comment-template/style.css 213 B
build/styles/block-library/comment-template/style.min.css 191 B
build/styles/block-library/comments-pagination-numbers/editor-rtl.css 135 B
build/styles/block-library/comments-pagination-numbers/editor-rtl.min.css 122 B
build/styles/block-library/comments-pagination-numbers/editor.css 144 B
build/styles/block-library/comments-pagination-numbers/editor.min.css 121 B
build/styles/block-library/comments-pagination/editor-rtl.css 184 B
build/styles/block-library/comments-pagination/editor-rtl.min.css 168 B
build/styles/block-library/comments-pagination/editor.css 184 B
build/styles/block-library/comments-pagination/editor.min.css 168 B
build/styles/block-library/comments-pagination/style-rtl.css 224 B
build/styles/block-library/comments-pagination/style-rtl.min.css 201 B
build/styles/block-library/comments-pagination/style.css 236 B
build/styles/block-library/comments-pagination/style.min.css 201 B
build/styles/block-library/comments-title/editor-rtl.css 83 B
build/styles/block-library/comments-title/editor-rtl.min.css 75 B
build/styles/block-library/comments-title/editor.css 83 B
build/styles/block-library/comments-title/editor.min.css 75 B
build/styles/block-library/comments/editor-rtl.css 968 B
build/styles/block-library/comments/editor-rtl.min.css 842 B
build/styles/block-library/comments/editor.css 968 B
build/styles/block-library/comments/editor.min.css 842 B
build/styles/block-library/comments/style-rtl.css 754 B
build/styles/block-library/comments/style-rtl.min.css 637 B
build/styles/block-library/comments/style.css 752 B
build/styles/block-library/comments/style.min.css 637 B
build/styles/block-library/common-rtl.css 2.48 kB
build/styles/block-library/common-rtl.min.css 1.11 kB
build/styles/block-library/common.css 2.49 kB
build/styles/block-library/common.min.css 1.11 kB
build/styles/block-library/cover/editor-rtl.css 1.05 kB
build/styles/block-library/cover/editor-rtl.min.css 631 B
build/styles/block-library/cover/editor.css 1.05 kB
build/styles/block-library/cover/editor.min.css 631 B
build/styles/block-library/cover/style-rtl.css 2.5 kB
build/styles/block-library/cover/style-rtl.min.css 1.82 kB
build/styles/block-library/cover/style.css 2.51 kB
build/styles/block-library/cover/style.min.css 1.81 kB
build/styles/block-library/details/editor-rtl.css 72 B
build/styles/block-library/details/editor-rtl.min.css 65 B
build/styles/block-library/details/editor.css 72 B
build/styles/block-library/details/editor.min.css 65 B
build/styles/block-library/details/style-rtl.css 97 B
build/styles/block-library/details/style-rtl.min.css 86 B
build/styles/block-library/details/style.css 97 B
build/styles/block-library/details/style.min.css 86 B
build/styles/block-library/editor-elements-rtl.css 117 B
build/styles/block-library/editor-elements-rtl.min.css 75 B
build/styles/block-library/editor-elements.css 117 B
build/styles/block-library/editor-elements.min.css 75 B
build/styles/block-library/editor-rtl.css 12.2 kB
build/styles/block-library/editor-rtl.min.css 10 kB
build/styles/block-library/editor.css 12.3 kB
build/styles/block-library/editor.min.css 10 kB
build/styles/block-library/elements-rtl.css 84 B
build/styles/block-library/elements-rtl.min.css 54 B
build/styles/block-library/elements.css 84 B
build/styles/block-library/elements.min.css 54 B
build/styles/block-library/embed/editor-rtl.css 391 B
build/styles/block-library/embed/editor-rtl.min.css 331 B
build/styles/block-library/embed/editor.css 390 B
build/styles/block-library/embed/editor.min.css 331 B
build/styles/block-library/embed/style-rtl.css 1.29 kB
build/styles/block-library/embed/style-rtl.min.css 448 B
build/styles/block-library/embed/style.css 1.29 kB
build/styles/block-library/embed/style.min.css 448 B
build/styles/block-library/embed/theme-rtl.css 967 B
build/styles/block-library/embed/theme-rtl.min.css 133 B
build/styles/block-library/embed/theme.css 967 B
build/styles/block-library/embed/theme.min.css 133 B
build/styles/block-library/file/editor-rtl.css 352 B
build/styles/block-library/file/editor-rtl.min.css 324 B
build/styles/block-library/file/editor.css 353 B
build/styles/block-library/file/editor.min.css 324 B
build/styles/block-library/file/style-rtl.css 318 B
build/styles/block-library/file/style-rtl.min.css 278 B
build/styles/block-library/file/style.css 331 B
build/styles/block-library/file/style.min.css 278 B
build/styles/block-library/footnotes/style-rtl.css 220 B
build/styles/block-library/footnotes/style-rtl.min.css 198 B
build/styles/block-library/footnotes/style.css 219 B
build/styles/block-library/footnotes/style.min.css 197 B
build/styles/block-library/form-input/editor-rtl.css 247 B
build/styles/block-library/form-input/editor-rtl.min.css 229 B
build/styles/block-library/form-input/editor.css 246 B
build/styles/block-library/form-input/editor.min.css 229 B
build/styles/block-library/form-input/style-rtl.css 467 B
build/styles/block-library/form-input/style-rtl.min.css 366 B
build/styles/block-library/form-input/style.css 467 B
build/styles/block-library/form-input/style.min.css 366 B
build/styles/block-library/form-submission-notification/editor-rtl.css 368 B
build/styles/block-library/form-submission-notification/editor-rtl.min.css 344 B
build/styles/block-library/form-submission-notification/editor.css 368 B
build/styles/block-library/form-submission-notification/editor.min.css 341 B
build/styles/block-library/form-submit-button/style-rtl.css 77 B
build/styles/block-library/form-submit-button/style-rtl.min.css 69 B
build/styles/block-library/form-submit-button/style.css 77 B
build/styles/block-library/form-submit-button/style.min.css 69 B
build/styles/block-library/freeform/editor-rtl.css 1.12 kB
build/styles/block-library/freeform/editor-rtl.min.css 288 B
build/styles/block-library/freeform/editor.css 1.12 kB
build/styles/block-library/freeform/editor.min.css 288 B
build/styles/block-library/gallery/editor-rtl.css 1.52 kB
build/styles/block-library/gallery/editor-rtl.min.css 615 B
build/styles/block-library/gallery/editor.css 1.52 kB
build/styles/block-library/gallery/editor.min.css 616 B
build/styles/block-library/gallery/style-rtl.css 2.84 kB
build/styles/block-library/gallery/style-rtl.min.css 1.84 kB
build/styles/block-library/gallery/style.css 2.84 kB
build/styles/block-library/gallery/style.min.css 1.84 kB
build/styles/block-library/gallery/theme-rtl.css 941 B
build/styles/block-library/gallery/theme-rtl.min.css 108 B
build/styles/block-library/gallery/theme.css 941 B
build/styles/block-library/gallery/theme.min.css 108 B
build/styles/block-library/group/editor-rtl.css 772 B
build/styles/block-library/group/editor-rtl.min.css 335 B
build/styles/block-library/group/editor.css 772 B
build/styles/block-library/group/editor.min.css 335 B
build/styles/block-library/group/style-rtl.css 120 B
build/styles/block-library/group/style-rtl.min.css 103 B
build/styles/block-library/group/style.css 120 B
build/styles/block-library/group/style.min.css 103 B
build/styles/block-library/group/theme-rtl.css 468 B
build/styles/block-library/group/theme-rtl.min.css 79 B
build/styles/block-library/group/theme.css 468 B
build/styles/block-library/group/theme.min.css 79 B
build/styles/block-library/heading/style-rtl.css 604 B
build/styles/block-library/heading/style-rtl.min.css 205 B
build/styles/block-library/heading/style.css 604 B
build/styles/block-library/heading/style.min.css 205 B
build/styles/block-library/html/editor-rtl.css 1.24 kB
build/styles/block-library/html/editor-rtl.min.css 419 B
build/styles/block-library/html/editor.css 1.25 kB
build/styles/block-library/html/editor.min.css 419 B
build/styles/block-library/icon/editor-rtl.css 753 B
build/styles/block-library/icon/editor-rtl.min.css 353 B
build/styles/block-library/icon/editor.css 753 B
build/styles/block-library/icon/editor.min.css 353 B
build/styles/block-library/icon/style-rtl.css 218 B
build/styles/block-library/icon/style-rtl.min.css 154 B
build/styles/block-library/icon/style.css 218 B
build/styles/block-library/icon/style.min.css 154 B
build/styles/block-library/image/editor-rtl.css 1.63 kB
build/styles/block-library/image/editor-rtl.min.css 763 B
build/styles/block-library/image/editor.css 1.62 kB
build/styles/block-library/image/editor.min.css 763 B
build/styles/block-library/image/style-rtl.css 2.92 kB
build/styles/block-library/image/style-rtl.min.css 1.86 kB
build/styles/block-library/image/style.css 2.92 kB
build/styles/block-library/image/style.min.css 1.85 kB
build/styles/block-library/image/theme-rtl.css 971 B
build/styles/block-library/image/theme-rtl.min.css 137 B
build/styles/block-library/image/theme.css 971 B
build/styles/block-library/image/theme.min.css 137 B
build/styles/block-library/latest-comments/style-rtl.css 394 B
build/styles/block-library/latest-comments/style-rtl.min.css 355 B
build/styles/block-library/latest-comments/style.css 394 B
build/styles/block-library/latest-comments/style.min.css 354 B
build/styles/block-library/latest-posts/editor-rtl.css 154 B
build/styles/block-library/latest-posts/editor-rtl.min.css 139 B
build/styles/block-library/latest-posts/editor.css 153 B
build/styles/block-library/latest-posts/editor.min.css 138 B
build/styles/block-library/latest-posts/style-rtl.css 1.36 kB
build/styles/block-library/latest-posts/style-rtl.min.css 520 B
build/styles/block-library/latest-posts/style.css 1.37 kB
build/styles/block-library/latest-posts/style.min.css 520 B
build/styles/block-library/list/style-rtl.css 498 B
build/styles/block-library/list/style-rtl.min.css 107 B
build/styles/block-library/list/style.css 498 B
build/styles/block-library/list/style.min.css 107 B
build/styles/block-library/loginout/style-rtl.css 68 B
build/styles/block-library/loginout/style-rtl.min.css 61 B
build/styles/block-library/loginout/style.css 68 B
build/styles/block-library/loginout/style.min.css 61 B
build/styles/block-library/math/editor-rtl.css 491 B
build/styles/block-library/math/editor-rtl.min.css 105 B
build/styles/block-library/math/editor.css 502 B
build/styles/block-library/math/editor.min.css 105 B
build/styles/block-library/math/style-rtl.css 70 B
build/styles/block-library/math/style-rtl.min.css 61 B
build/styles/block-library/math/style.css 70 B
build/styles/block-library/math/style.min.css 61 B
build/styles/block-library/media-text/editor-rtl.css 389 B
build/styles/block-library/media-text/editor-rtl.min.css 321 B
build/styles/block-library/media-text/editor.css 389 B
build/styles/block-library/media-text/editor.min.css 320 B
build/styles/block-library/media-text/style-rtl.css 873 B
build/styles/block-library/media-text/style-rtl.min.css 552 B
build/styles/block-library/media-text/style.css 901 B
build/styles/block-library/media-text/style.min.css 550 B
build/styles/block-library/more/editor-rtl.css 796 B
build/styles/block-library/more/editor-rtl.min.css 393 B
build/styles/block-library/more/editor.css 798 B
build/styles/block-library/more/editor.min.css 393 B
build/styles/block-library/navigation-link/editor-rtl.css 1.21 kB
build/styles/block-library/navigation-link/editor-rtl.min.css 645 B
build/styles/block-library/navigation-link/editor.css 1.21 kB
build/styles/block-library/navigation-link/editor.min.css 647 B
build/styles/block-library/navigation-link/style-rtl.css 579 B
build/styles/block-library/navigation-link/style-rtl.min.css 190 B
build/styles/block-library/navigation-link/style.css 579 B
build/styles/block-library/navigation-link/style.min.css 188 B
build/styles/block-library/navigation-overlay-close/style-rtl.css 257 B
build/styles/block-library/navigation-overlay-close/style-rtl.min.css 236 B
build/styles/block-library/navigation-overlay-close/style.css 257 B
build/styles/block-library/navigation-overlay-close/style.min.css 236 B
build/styles/block-library/navigation-submenu/editor-rtl.css 1.12 kB
build/styles/block-library/navigation-submenu/editor-rtl.min.css 295 B
build/styles/block-library/navigation-submenu/editor.css 1.12 kB
build/styles/block-library/navigation-submenu/editor.min.css 294 B
build/styles/block-library/navigation/editor-rtl.css 3.28 kB
build/styles/block-library/navigation/editor-rtl.min.css 2.28 kB
build/styles/block-library/navigation/editor.css 3.29 kB
build/styles/block-library/navigation/editor.min.css 2.28 kB
build/styles/block-library/navigation/style-rtl.css 3.55 kB
build/styles/block-library/navigation/style-rtl.min.css 2.49 kB
build/styles/block-library/navigation/style.css 3.54 kB
build/styles/block-library/navigation/style.min.css 2.48 kB
build/styles/block-library/nextpage/editor-rtl.css 799 B
build/styles/block-library/nextpage/editor-rtl.min.css 392 B
build/styles/block-library/nextpage/editor.css 800 B
build/styles/block-library/nextpage/editor.min.css 392 B
build/styles/block-library/page-list/editor-rtl.css 1.18 kB
build/styles/block-library/page-list/editor-rtl.min.css 356 B
build/styles/block-library/page-list/editor.css 1.18 kB
build/styles/block-library/page-list/editor.min.css 356 B
build/styles/block-library/page-list/style-rtl.css 207 B
build/styles/block-library/page-list/style-rtl.min.css 192 B
build/styles/block-library/page-list/style.css 207 B
build/styles/block-library/page-list/style.min.css 192 B
build/styles/block-library/paragraph/editor-rtl.css 315 B
build/styles/block-library/paragraph/editor-rtl.min.css 292 B
build/styles/block-library/paragraph/editor.css 314 B
build/styles/block-library/paragraph/editor.min.css 292 B
build/styles/block-library/paragraph/style-rtl.css 746 B
build/styles/block-library/paragraph/style-rtl.min.css 341 B
build/styles/block-library/paragraph/style.css 752 B
build/styles/block-library/paragraph/style.min.css 340 B
build/styles/block-library/playlist-track/style-rtl.css 453 B
build/styles/block-library/playlist-track/style-rtl.min.css 420 B
build/styles/block-library/playlist-track/style.css 453 B
build/styles/block-library/playlist-track/style.min.css 420 B
build/styles/block-library/playlist/editor-rtl.css 84 B
build/styles/block-library/playlist/editor-rtl.min.css 73 B
build/styles/block-library/playlist/editor.css 84 B
build/styles/block-library/playlist/editor.min.css 73 B
build/styles/block-library/playlist/style-rtl.css 385 B
build/styles/block-library/playlist/style-rtl.min.css 363 B
build/styles/block-library/playlist/style.css 382 B
build/styles/block-library/playlist/style.min.css 363 B
build/styles/block-library/post-author-biography/style-rtl.css 81 B
build/styles/block-library/post-author-biography/style-rtl.min.css 74 B
build/styles/block-library/post-author-biography/style.css 81 B
build/styles/block-library/post-author-biography/style.min.css 74 B
build/styles/block-library/post-author-name/style-rtl.css 76 B
build/styles/block-library/post-author-name/style-rtl.min.css 69 B
build/styles/block-library/post-author-name/style.css 76 B
build/styles/block-library/post-author-name/style.min.css 69 B
build/styles/block-library/post-author/editor-rtl.css 490 B
build/styles/block-library/post-author/editor-rtl.min.css 104 B
build/styles/block-library/post-author/editor.css 490 B
build/styles/block-library/post-author/editor.min.css 104 B
build/styles/block-library/post-author/style-rtl.css 213 B
build/styles/block-library/post-author/style-rtl.min.css 188 B
build/styles/block-library/post-author/style.css 214 B
build/styles/block-library/post-author/style.min.css 189 B
build/styles/block-library/post-comments-count/style-rtl.css 79 B
build/styles/block-library/post-comments-count/style-rtl.min.css 72 B
build/styles/block-library/post-comments-count/style.css 79 B
build/styles/block-library/post-comments-count/style.min.css 72 B
build/styles/block-library/post-comments-form/editor-rtl.css 104 B
build/styles/block-library/post-comments-form/editor-rtl.min.css 96 B
build/styles/block-library/post-comments-form/editor.css 104 B
build/styles/block-library/post-comments-form/editor.min.css 96 B
build/styles/block-library/post-comments-form/style-rtl.css 585 B
build/styles/block-library/post-comments-form/style-rtl.min.css 525 B
build/styles/block-library/post-comments-form/style.css 584 B
build/styles/block-library/post-comments-form/style.min.css 525 B
build/styles/block-library/post-comments-link/style-rtl.css 78 B
build/styles/block-library/post-comments-link/style-rtl.min.css 71 B
build/styles/block-library/post-comments-link/style.css 78 B
build/styles/block-library/post-comments-link/style.min.css 71 B
build/styles/block-library/post-content/style-rtl.css 68 B
build/styles/block-library/post-content/style-rtl.min.css 61 B
build/styles/block-library/post-content/style.css 68 B
build/styles/block-library/post-content/style.min.css 61 B
build/styles/block-library/post-date/style-rtl.css 69 B
build/styles/block-library/post-date/style-rtl.min.css 62 B
build/styles/block-library/post-date/style.css 69 B
build/styles/block-library/post-date/style.min.css 62 B
build/styles/block-library/post-excerpt/editor-rtl.css 78 B
build/styles/block-library/post-excerpt/editor-rtl.min.css 71 B
build/styles/block-library/post-excerpt/editor.css 78 B
build/styles/block-library/post-excerpt/editor.min.css 71 B
build/styles/block-library/post-excerpt/style-rtl.css 171 B
build/styles/block-library/post-excerpt/style-rtl.min.css 155 B
build/styles/block-library/post-excerpt/style.css 171 B
build/styles/block-library/post-excerpt/style.min.css 155 B
build/styles/block-library/post-featured-image/editor-rtl.css 1.14 kB
build/styles/block-library/post-featured-image/editor-rtl.min.css 719 B
build/styles/block-library/post-featured-image/editor.css 1.14 kB
build/styles/block-library/post-featured-image/editor.min.css 717 B
build/styles/block-library/post-featured-image/style-rtl.css 392 B
build/styles/block-library/post-featured-image/style-rtl.min.css 347 B
build/styles/block-library/post-featured-image/style.css 392 B
build/styles/block-library/post-featured-image/style.min.css 347 B
build/styles/block-library/post-navigation-link/style-rtl.css 234 B
build/styles/block-library/post-navigation-link/style-rtl.min.css 215 B
build/styles/block-library/post-navigation-link/style.css 245 B
build/styles/block-library/post-navigation-link/style.min.css 214 B
build/styles/block-library/post-template/style-rtl.css 1.25 kB
build/styles/block-library/post-template/style-rtl.min.css 414 B
build/styles/block-library/post-template/style.css 1.25 kB
build/styles/block-library/post-template/style.min.css 414 B
build/styles/block-library/post-terms/style-rtl.css 108 B
build/styles/block-library/post-terms/style-rtl.min.css 96 B
build/styles/block-library/post-terms/style.css 108 B
build/styles/block-library/post-terms/style.min.css 96 B
build/styles/block-library/post-time-to-read/style-rtl.css 77 B
build/styles/block-library/post-time-to-read/style-rtl.min.css 70 B
build/styles/block-library/post-time-to-read/style.css 77 B
build/styles/block-library/post-time-to-read/style.min.css 70 B
build/styles/block-library/post-title/style-rtl.css 175 B
build/styles/block-library/post-title/style-rtl.min.css 162 B
build/styles/block-library/post-title/style.css 175 B
build/styles/block-library/post-title/style.min.css 162 B
build/styles/block-library/preformatted/style-rtl.css 511 B
build/styles/block-library/preformatted/style-rtl.min.css 125 B
build/styles/block-library/preformatted/style.css 511 B
build/styles/block-library/preformatted/style.min.css 125 B
build/styles/block-library/pullquote/editor-rtl.css 146 B
build/styles/block-library/pullquote/editor-rtl.min.css 133 B
build/styles/block-library/pullquote/editor.css 146 B
build/styles/block-library/pullquote/editor.min.css 133 B
build/styles/block-library/pullquote/style-rtl.css 765 B
build/styles/block-library/pullquote/style-rtl.min.css 365 B
build/styles/block-library/pullquote/style.css 764 B
build/styles/block-library/pullquote/style.min.css 365 B
build/styles/block-library/pullquote/theme-rtl.css 195 B
build/styles/block-library/pullquote/theme-rtl.min.css 176 B
build/styles/block-library/pullquote/theme.css 195 B
build/styles/block-library/pullquote/theme.min.css 176 B
build/styles/block-library/query-pagination-numbers/editor-rtl.css 134 B
build/styles/block-library/query-pagination-numbers/editor-rtl.min.css 121 B
build/styles/block-library/query-pagination-numbers/editor.css 144 B
build/styles/block-library/query-pagination-numbers/editor.min.css 118 B
build/styles/block-library/query-pagination/editor-rtl.css 168 B
build/styles/block-library/query-pagination/editor-rtl.min.css 154 B
build/styles/block-library/query-pagination/editor.css 168 B
build/styles/block-library/query-pagination/editor.min.css 154 B
build/styles/block-library/query-pagination/style-rtl.css 254 B
build/styles/block-library/query-pagination/style-rtl.min.css 237 B
build/styles/block-library/query-pagination/style.css 265 B
build/styles/block-library/query-pagination/style.min.css 237 B
build/styles/block-library/query-title/style-rtl.css 71 B
build/styles/block-library/query-title/style-rtl.min.css 64 B
build/styles/block-library/query-title/style.css 71 B
build/styles/block-library/query-title/style.min.css 64 B
build/styles/block-library/query-total/style-rtl.css 71 B
build/styles/block-library/query-total/style-rtl.min.css 64 B
build/styles/block-library/query-total/style.css 71 B
build/styles/block-library/query-total/style.min.css 64 B
build/styles/block-library/query/editor-rtl.css 1.28 kB
build/styles/block-library/query/editor-rtl.min.css 438 B
build/styles/block-library/query/editor.css 1.28 kB
build/styles/block-library/query/editor.min.css 438 B
build/styles/block-library/quote/style-rtl.css 255 B
build/styles/block-library/quote/style-rtl.min.css 238 B
build/styles/block-library/quote/style.css 256 B
build/styles/block-library/quote/style.min.css 238 B
build/styles/block-library/quote/theme-rtl.css 253 B
build/styles/block-library/quote/theme-rtl.min.css 233 B
build/styles/block-library/quote/theme.css 254 B
build/styles/block-library/quote/theme.min.css 236 B
build/styles/block-library/read-more/style-rtl.css 146 B
build/styles/block-library/read-more/style-rtl.min.css 131 B
build/styles/block-library/read-more/style.css 146 B
build/styles/block-library/read-more/style.min.css 131 B
build/styles/block-library/reset-rtl.css 936 B
build/styles/block-library/reset-rtl.min.css 467 B
build/styles/block-library/reset.css 936 B
build/styles/block-library/reset.min.css 467 B
build/styles/block-library/rss/editor-rtl.css 144 B
build/styles/block-library/rss/editor-rtl.min.css 126 B
build/styles/block-library/rss/editor.css 144 B
build/styles/block-library/rss/editor.min.css 126 B
build/styles/block-library/rss/style-rtl.css 1.11 kB
build/styles/block-library/rss/style-rtl.min.css 284 B
build/styles/block-library/rss/style.css 1.12 kB
build/styles/block-library/rss/style.min.css 283 B
build/styles/block-library/search/editor-rtl.css 217 B
build/styles/block-library/search/editor-rtl.min.css 199 B
build/styles/block-library/search/editor.css 217 B
build/styles/block-library/search/editor.min.css 199 B
build/styles/block-library/search/style-rtl.css 1.1 kB
build/styles/block-library/search/style-rtl.min.css 665 B
build/styles/block-library/search/style.css 1.1 kB
build/styles/block-library/search/style.min.css 666 B
build/styles/block-library/search/theme-rtl.css 130 B
build/styles/block-library/search/theme-rtl.min.css 113 B
build/styles/block-library/search/theme.css 130 B
build/styles/block-library/search/theme.min.css 113 B
build/styles/block-library/separator/editor-rtl.css 106 B
build/styles/block-library/separator/editor-rtl.min.css 100 B
build/styles/block-library/separator/editor.css 106 B
build/styles/block-library/separator/editor.min.css 100 B
build/styles/block-library/separator/style-rtl.css 284 B
build/styles/block-library/separator/style-rtl.min.css 248 B
build/styles/block-library/separator/style.css 297 B
build/styles/block-library/separator/style.min.css 248 B
build/styles/block-library/separator/theme-rtl.css 226 B
build/styles/block-library/separator/theme-rtl.min.css 195 B
build/styles/block-library/separator/theme.css 226 B
build/styles/block-library/separator/theme.min.css 195 B
build/styles/block-library/shortcode/editor-rtl.css 1.1 kB
build/styles/block-library/shortcode/editor-rtl.min.css 286 B
build/styles/block-library/shortcode/editor.css 1.1 kB
build/styles/block-library/shortcode/editor.min.css 286 B
build/styles/block-library/site-logo/editor-rtl.css 1.12 kB
build/styles/block-library/site-logo/editor-rtl.min.css 696 B
build/styles/block-library/site-logo/editor.css 1.12 kB
build/styles/block-library/site-logo/editor.min.css 692 B
build/styles/block-library/site-logo/style-rtl.css 239 B
build/styles/block-library/site-logo/style-rtl.min.css 218 B
build/styles/block-library/site-logo/style.css 238 B
build/styles/block-library/site-logo/style.min.css 218 B
build/styles/block-library/site-tagline/editor-rtl.css 94 B
build/styles/block-library/site-tagline/editor-rtl.min.css 87 B
build/styles/block-library/site-tagline/editor.css 94 B
build/styles/block-library/site-tagline/editor.min.css 87 B
build/styles/block-library/site-tagline/style-rtl.css 72 B
build/styles/block-library/site-tagline/style-rtl.min.css 65 B
build/styles/block-library/site-tagline/style.css 72 B
build/styles/block-library/site-tagline/style.min.css 65 B
build/styles/block-library/site-title/editor-rtl.css 93 B
build/styles/block-library/site-title/editor-rtl.min.css 85 B
build/styles/block-library/site-title/editor.css 93 B
build/styles/block-library/site-title/editor.min.css 85 B
build/styles/block-library/site-title/style-rtl.css 153 B
build/styles/block-library/site-title/style-rtl.min.css 143 B
build/styles/block-library/site-title/style.css 153 B
build/styles/block-library/site-title/style.min.css 143 B
build/styles/block-library/social-link/editor-rtl.css 346 B
build/styles/block-library/social-link/editor-rtl.min.css 314 B
build/styles/block-library/social-link/editor.css 348 B
build/styles/block-library/social-link/editor.min.css 314 B
build/styles/block-library/social-links/editor-rtl.css 737 B
build/styles/block-library/social-links/editor-rtl.min.css 339 B
build/styles/block-library/social-links/editor.css 738 B
build/styles/block-library/social-links/editor.min.css 338 B
build/styles/block-library/social-links/style-rtl.css 1.57 kB
build/styles/block-library/social-links/style-rtl.min.css 1.51 kB
build/styles/block-library/social-links/style.css 1.57 kB
build/styles/block-library/social-links/style.min.css 1.51 kB
build/styles/block-library/spacer/editor-rtl.css 774 B
build/styles/block-library/spacer/editor-rtl.min.css 346 B
build/styles/block-library/spacer/editor.css 774 B
build/styles/block-library/spacer/editor.min.css 346 B
build/styles/block-library/spacer/style-rtl.css 55 B
build/styles/block-library/spacer/style-rtl.min.css 48 B
build/styles/block-library/spacer/style.css 55 B
build/styles/block-library/spacer/style.min.css 48 B
build/styles/block-library/style-rtl.css 20.5 kB
build/styles/block-library/style-rtl.min.css 17.1 kB
build/styles/block-library/style.css 20.7 kB
build/styles/block-library/style.min.css 17 kB
build/styles/block-library/tab-panel/style-rtl.css 75 B
build/styles/block-library/tab-panel/style-rtl.min.css 64 B
build/styles/block-library/tab-panel/style.css 75 B
build/styles/block-library/tab-panel/style.min.css 64 B
build/styles/block-library/tab/style-rtl.css 233 B
build/styles/block-library/tab/style-rtl.min.css 210 B
build/styles/block-library/tab/style.css 233 B
build/styles/block-library/tab/style.min.css 210 B
build/styles/block-library/table-of-contents/style-rtl.css 89 B
build/styles/block-library/table-of-contents/style-rtl.min.css 83 B
build/styles/block-library/table-of-contents/style.css 89 B
build/styles/block-library/table-of-contents/style.min.css 83 B
build/styles/block-library/table/editor-rtl.css 1.25 kB
build/styles/block-library/table/editor-rtl.min.css 394 B
build/styles/block-library/table/editor.css 1.25 kB
build/styles/block-library/table/editor.min.css 394 B
build/styles/block-library/table/style-rtl.css 1.06 kB
build/styles/block-library/table/style-rtl.min.css 641 B
build/styles/block-library/table/style.css 1.06 kB
build/styles/block-library/table/style.min.css 640 B
build/styles/block-library/table/theme-rtl.css 985 B
build/styles/block-library/table/theme-rtl.min.css 152 B
build/styles/block-library/table/theme.css 985 B
build/styles/block-library/table/theme.min.css 152 B
build/styles/block-library/tabs-menu-item/editor-rtl.css 168 B
build/styles/block-library/tabs-menu-item/editor-rtl.min.css 155 B
build/styles/block-library/tabs-menu-item/editor.css 168 B
build/styles/block-library/tabs-menu-item/editor.min.css 155 B
build/styles/block-library/tabs-menu-item/style-rtl.css 367 B
build/styles/block-library/tabs-menu-item/style-rtl.min.css 337 B
build/styles/block-library/tabs-menu-item/style.css 367 B
build/styles/block-library/tabs-menu-item/style.min.css 337 B
build/styles/block-library/tabs-menu/editor-rtl.css 102 B
build/styles/block-library/tabs-menu/editor-rtl.min.css 93 B
build/styles/block-library/tabs-menu/editor.css 102 B
build/styles/block-library/tabs-menu/editor.min.css 93 B
build/styles/block-library/tabs-menu/style-rtl.css 135 B
build/styles/block-library/tabs-menu/style-rtl.min.css 111 B
build/styles/block-library/tabs-menu/style.css 135 B
build/styles/block-library/tabs-menu/style.min.css 111 B
build/styles/block-library/tabs/style-rtl.css 95 B
build/styles/block-library/tabs/style-rtl.min.css 84 B
build/styles/block-library/tabs/style.css 95 B
build/styles/block-library/tabs/style.min.css 84 B
build/styles/block-library/tag-cloud/style-rtl.css 283 B
build/styles/block-library/tag-cloud/style-rtl.min.css 248 B
build/styles/block-library/tag-cloud/style.css 283 B
build/styles/block-library/tag-cloud/style.min.css 248 B
build/styles/block-library/template-part/editor-rtl.css 1.2 kB
build/styles/block-library/template-part/editor-rtl.min.css 368 B
build/styles/block-library/template-part/editor.css 1.2 kB
build/styles/block-library/template-part/editor.min.css 368 B
build/styles/block-library/template-part/theme-rtl.css 492 B
build/styles/block-library/template-part/theme-rtl.min.css 113 B
build/styles/block-library/template-part/theme.css 492 B
build/styles/block-library/template-part/theme.min.css 113 B
build/styles/block-library/term-count/style-rtl.css 70 B
build/styles/block-library/term-count/style-rtl.min.css 63 B
build/styles/block-library/term-count/style.css 70 B
build/styles/block-library/term-count/style.min.css 63 B
build/styles/block-library/term-description/style-rtl.css 138 B
build/styles/block-library/term-description/style-rtl.min.css 126 B
build/styles/block-library/term-description/style.css 138 B
build/styles/block-library/term-description/style.min.css 126 B
build/styles/block-library/term-name/style-rtl.css 69 B
build/styles/block-library/term-name/style-rtl.min.css 62 B
build/styles/block-library/term-name/style.css 69 B
build/styles/block-library/term-name/style.min.css 62 B
build/styles/block-library/term-template/editor-rtl.css 267 B
build/styles/block-library/term-template/editor-rtl.min.css 225 B
build/styles/block-library/term-template/editor.css 267 B
build/styles/block-library/term-template/editor.min.css 225 B
build/styles/block-library/term-template/style-rtl.css 124 B
build/styles/block-library/term-template/style-rtl.min.css 114 B
build/styles/block-library/term-template/style.css 124 B
build/styles/block-library/term-template/style.min.css 114 B
build/styles/block-library/text-columns/editor-rtl.css 481 B
build/styles/block-library/text-columns/editor-rtl.min.css 95 B
build/styles/block-library/text-columns/editor.css 481 B
build/styles/block-library/text-columns/editor.min.css 95 B
build/styles/block-library/text-columns/style-rtl.css 177 B
build/styles/block-library/text-columns/style-rtl.min.css 165 B
build/styles/block-library/text-columns/style.css 177 B
build/styles/block-library/text-columns/style.min.css 165 B
build/styles/block-library/theme-rtl.css 1.59 kB
build/styles/block-library/theme-rtl.min.css 715 B
build/styles/block-library/theme.css 1.6 kB
build/styles/block-library/theme.min.css 719 B
build/styles/block-library/verse/style-rtl.css 155 B
build/styles/block-library/verse/style-rtl.min.css 137 B
build/styles/block-library/verse/style.css 155 B
build/styles/block-library/verse/style.min.css 137 B
build/styles/block-library/video/editor-rtl.css 825 B
build/styles/block-library/video/editor-rtl.min.css 415 B
build/styles/block-library/video/editor.css 826 B
build/styles/block-library/video/editor.min.css 416 B
build/styles/block-library/video/style-rtl.css 1.02 kB
build/styles/block-library/video/style-rtl.min.css 202 B
build/styles/block-library/video/style.css 1.02 kB
build/styles/block-library/video/style.min.css 202 B
build/styles/block-library/video/theme-rtl.css 967 B
build/styles/block-library/video/theme-rtl.min.css 134 B
build/styles/block-library/video/theme.css 967 B
build/styles/block-library/video/theme.min.css 134 B
build/styles/commands/style-rtl.css 2.01 kB
build/styles/commands/style-rtl.min.css 1.12 kB
build/styles/commands/style.css 2.01 kB
build/styles/commands/style.min.css 1.12 kB
build/styles/components/style-rtl.css 17.6 kB
build/styles/components/style-rtl.min.css 14.4 kB
build/styles/components/style.css 17.7 kB
build/styles/components/style.min.css 14.4 kB
build/styles/customize-widgets/style-rtl.css 2.35 kB
build/styles/customize-widgets/style-rtl.min.css 1.44 kB
build/styles/customize-widgets/style.css 2.35 kB
build/styles/customize-widgets/style.min.css 1.44 kB
build/styles/edit-post/classic-rtl.css 1.29 kB
build/styles/edit-post/classic-rtl.min.css 426 B
build/styles/edit-post/classic.css 1.31 kB
build/styles/edit-post/classic.min.css 427 B
build/styles/edit-post/style-rtl.css 3.92 kB
build/styles/edit-post/style-rtl.min.css 2.56 kB
build/styles/edit-post/style.css 3.93 kB
build/styles/edit-post/style.min.css 2.56 kB
build/styles/edit-site/style-rtl.css 20.3 kB
build/styles/edit-site/style-rtl.min.css 16.5 kB
build/styles/edit-site/style.css 20.4 kB
build/styles/edit-site/style.min.css 16.5 kB
build/styles/edit-widgets/style-rtl.css 5.16 kB
build/styles/edit-widgets/style-rtl.min.css 3.78 kB
build/styles/edit-widgets/style.css 5.15 kB
build/styles/edit-widgets/style.min.css 3.79 kB
build/styles/editor/style-rtl.css 23.1 kB
build/styles/editor/style-rtl.min.css 19.7 kB
build/styles/editor/style.css 23.2 kB
build/styles/editor/style.min.css 19.7 kB
build/styles/format-library/style-rtl.css 735 B
build/styles/format-library/style-rtl.min.css 326 B
build/styles/format-library/style.css 746 B
build/styles/format-library/style.min.css 326 B
build/styles/list-reusable-blocks/style-rtl.css 1.07 kB
build/styles/list-reusable-blocks/style-rtl.min.css 250 B
build/styles/list-reusable-blocks/style.css 1.07 kB
build/styles/list-reusable-blocks/style.min.css 249 B
build/styles/media-utils/style-rtl.css 1.67 kB
build/styles/media-utils/style-rtl.min.css 784 B
build/styles/media-utils/style.css 1.67 kB
build/styles/media-utils/style.min.css 783 B
build/styles/nux/style-rtl.css 1.48 kB
build/styles/nux/style-rtl.min.css 622 B
build/styles/nux/style.css 1.5 kB
build/styles/nux/style.min.css 618 B
build/styles/patterns/style-rtl.css 1.46 kB
build/styles/patterns/style-rtl.min.css 611 B
build/styles/patterns/style.css 1.46 kB
build/styles/patterns/style.min.css 611 B
build/styles/preferences/style-rtl.css 1.26 kB
build/styles/preferences/style-rtl.min.css 415 B
build/styles/preferences/style.css 1.26 kB
build/styles/preferences/style.min.css 415 B
build/styles/reusable-blocks/style-rtl.css 1.11 kB
build/styles/reusable-blocks/style-rtl.min.css 275 B
build/styles/reusable-blocks/style.css 1.11 kB
build/styles/reusable-blocks/style.min.css 275 B
build/styles/theme/style-rtl.css 2.76 kB
build/styles/theme/style-rtl.min.css 1.41 kB
build/styles/theme/style.css 2.76 kB
build/styles/theme/style.min.css 1.41 kB
build/styles/widgets/style-rtl.css 2.04 kB
build/styles/widgets/style-rtl.min.css 1.15 kB
build/styles/widgets/style.css 2.04 kB
build/styles/widgets/style.min.css 1.15 kB

compressed-size-action

@github-actions github-actions bot added [Package] Element /packages/element [Package] Block editor /packages/block-editor [Package] Edit Post /packages/edit-post [Package] Edit Site /packages/edit-site [Package] DataViews /packages/dataviews labels Feb 5, 2026
@manzoorwanijk manzoorwanijk force-pushed the update/set-npm-install-strategy branch 2 times, most recently from a57e609 to 7675dcf Compare February 5, 2026 11:29
@github-actions github-actions bot removed [Package] Element /packages/element [Package] Block editor /packages/block-editor [Package] Edit Post /packages/edit-post [Package] Edit Site /packages/edit-site labels Feb 5, 2026
@manzoorwanijk manzoorwanijk force-pushed the update/set-npm-install-strategy branch from 2fbf94d to 1b65b17 Compare February 5, 2026 14:17
@github-actions github-actions bot removed the [Package] DataViews /packages/dataviews label Feb 5, 2026
@github-actions
Copy link

github-actions bot commented Feb 5, 2026

Flaky tests detected in 7050ffe.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/22296383359
📝 Reported issues:

@manzoorwanijk manzoorwanijk changed the title [WIP] Set npm install strategy Set npm install strategy Feb 5, 2026
@manzoorwanijk manzoorwanijk changed the title Set npm install strategy Try npm install strategy Feb 5, 2026
@manzoorwanijk
Copy link
Member Author

The script mentioned in the description
// bin/rebuild-lockfile.js
#!/usr/bin/env node

/**
 * Rebuild package-lock.json with the install-strategy from .npmrc
 * while preserving the resolved versions from the existing lockfile.
 *
 * Usage:
 * git checkout trunk package-lock.json
 * node bin/rebuild-lockfile.js [--dry-run]
 *
 * This works by:
 * 1. Reading all resolved versions from the current lockfile
 * 2. Temporarily pinning all caret/tilde ranges in every package.json
 * 3. Temporarily adding overrides for all transitive deps in root package.json
 * 4. Deleting the lockfile
 * 5. Running `npm install --package-lock-only --ignore-scripts`
 * 6. Restoring all original package.json files
 */

const fs = require( 'fs' );
const path = require( 'path' );
const { execSync } = require( 'child_process' );

const ROOT = path.resolve( __dirname, '..' );
const DRY_RUN = process.argv.includes( '--dry-run' );

// 1. Read the current lockfile to get resolved versions.
const lockPath = path.join( ROOT, 'package-lock.json' );
const lock = JSON.parse( fs.readFileSync( lockPath, 'utf8' ) );

// Build a map of package name -> resolved version from lockfile.
// Also track leaf package names that have multiple distinct major versions —
// these cannot be pinned with a single override (e.g. wrap-ansi v3/v5/v6/v7/v8).
// Packages with multiple minor/patch versions within the same major are fine.
const resolvedVersions = new Map();
const multiMajorPackages = new Set();
const nonNpmPackages = new Set(); // packages resolved from non-npm sources
const leafMajors = new Map(); // leaf name -> Set of major versions

for ( const [ pkgPath, meta ] of Object.entries( lock.packages || {} ) ) {
	if ( ! meta.version || pkgPath === '' ) {
		continue;
	}
	// Extract package name from the path.
	// e.g. "node_modules/foo" -> "foo"
	// e.g. "packages/components/node_modules/framer-motion" -> "framer-motion"
	const match = pkgPath.match( /node_modules\/(.+)$/ );
	if ( match ) {
		const name = match[ 1 ];
		// Skip alias packages (e.g. "string-width-cjs" is really
		// "npm:string-width@4.2.3"). These have a `name` field in the
		// lockfile that differs from the directory name.
		if ( meta.name && meta.name !== name ) {
			continue;
		}
		// Skip packages resolved from non-npm sources (Git URLs, tarballs).
		// Overrides for these would fail with ETARGET.
		if (
			meta.resolved &&
			! meta.resolved.startsWith( 'https://registry.npmjs.org/' )
		) {
			nonNpmPackages.add( name );
		}
		// Keep the first (most hoisted) version as the canonical one.
		if ( ! resolvedVersions.has( name ) ) {
			resolvedVersions.set( name, meta.version );
		}
		// Track major versions per leaf name to detect multi-major packages.
		const leafName = name.includes( '/node_modules/' )
			? name.split( '/node_modules/' ).pop()
			: name;
		const major = meta.version.split( '.' )[ 0 ];
		if ( ! leafMajors.has( leafName ) ) {
			leafMajors.set( leafName, new Set() );
		}
		leafMajors.get( leafName ).add( major );
	}
}

for ( const [ leafName, majors ] of leafMajors ) {
	if ( majors.size > 1 ) {
		multiMajorPackages.add( leafName );
	}
}

console.log( `Found ${ resolvedVersions.size } resolved packages in lockfile` );
console.log(
	`Found ${ multiMajorPackages.size } multi-major packages (will skip overrides)`
);

// 2. Find all package.json files (root + workspaces).
const rootPkgPath = path.join( ROOT, 'package.json' );
const rootPkgContent = fs.readFileSync( rootPkgPath, 'utf8' );
const rootPkg = JSON.parse( rootPkgContent );
const workspaceGlobs = rootPkg.workspaces || [];

const pkgJsonPaths = [ rootPkgPath ];

for ( const wsGlob of workspaceGlobs ) {
	const base = wsGlob.replace( /\/\*$/, '' );
	const wsDir = path.join( ROOT, base );
	if ( ! fs.existsSync( wsDir ) ) {
		continue;
	}

	for ( const entry of fs.readdirSync( wsDir, { withFileTypes: true } ) ) {
		if ( ! entry.isDirectory() ) {
			continue;
		}
		const pkgJson = path.join( wsDir, entry.name, 'package.json' );
		if ( fs.existsSync( pkgJson ) ) {
			pkgJsonPaths.push( pkgJson );
		}
	}
}

console.log( `Found ${ pkgJsonPaths.length } package.json files` );

// 3. Pin direct dependency versions in all package.json files.
const backups = new Map();
let pinCount = 0;

// Collect root direct dependency names — overrides for these cause EOVERRIDE.
// Workspace direct deps are OK: npm just ignores the override for that
// workspace but still applies it to other consumers.
const rootDirectDeps = new Set();

for ( const pkgJsonPath of pkgJsonPaths ) {
	const content = fs.readFileSync( pkgJsonPath, 'utf8' );
	const pkg = JSON.parse( content );
	const isRoot = pkgJsonPath === rootPkgPath;
	let changed = false;

	for ( const depField of [ 'dependencies', 'devDependencies' ] ) {
		const deps = pkg[ depField ];
		if ( ! deps ) {
			continue;
		}

		for ( const [ name, range ] of Object.entries( deps ) ) {
			if ( isRoot ) {
				rootDirectDeps.add( name );
			}

			// Only pin semver ranges (skip file:, workspace:, npm:, url, etc.)
			if ( typeof range !== 'string' || ! /^[\^~]/.test( range ) ) {
				continue;
			}

			const resolved = resolvedVersions.get( name );
			if ( resolved ) {
				deps[ name ] = resolved;
				changed = true;
				pinCount++;
			}
		}
	}

	if ( changed ) {
		backups.set( pkgJsonPath, content );
		if ( ! DRY_RUN ) {
			fs.writeFileSync(
				pkgJsonPath,
				JSON.stringify( pkg, null, '\t' ) + '\n'
			);
		}
	}
}

console.log(
	`Pinned ${ pinCount } dependency ranges across ${ backups.size } files`
);

// 4. Add overrides for transitive dependencies to root package.json.
// This pins versions that are resolved inside published packages (e.g.
// @emotion/react -> @emotion/cache) which can't be pinned via
// package.json edits alone.
const existingOverrides = rootPkg.overrides || {};
const transOverrides = { ...existingOverrides };
let overrideCount = 0;

for ( const [ name, version ] of resolvedVersions ) {
	// Skip root direct dependencies — overrides for these cause EOVERRIDE.
	if ( rootDirectDeps.has( name ) ) {
		continue;
	}
	// Skip packages resolved from non-npm sources (ETARGET).
	if ( nonNpmPackages.has( name ) ) {
		continue;
	}
	// For packages with nested node_modules in their name (e.g.
	// "@babel/core/node_modules/lru-cache"), extract just the leaf
	// package name for the override.
	const overrideName = name.includes( '/node_modules/' )
		? name.split( '/node_modules/' ).pop()
		: name;
	// Skip if the leaf name is a root direct dependency or non-npm package.
	if ( rootDirectDeps.has( overrideName ) ) {
		continue;
	}
	if ( nonNpmPackages.has( overrideName ) ) {
		continue;
	}
	// Skip packages with multiple distinct versions in the lockfile.
	// A single override can't represent different versions for different
	// consumers (e.g. wrap-ansi v6 for some, v7/v8 for others).
	if ( multiMajorPackages.has( overrideName ) ) {
		continue;
	}
	if ( transOverrides[ overrideName ] ) {
		continue;
	}
	if ( ! existingOverrides[ overrideName ] ) {
		// Prefer the hoisted (plain) version over a nested one. If the
		// plain name exists in resolvedVersions, use that version instead
		// of the nested entry's version (which may be a different major).
		const preferredVersion =
			overrideName !== name && resolvedVersions.has( overrideName )
				? resolvedVersions.get( overrideName )
				: version;
		transOverrides[ overrideName ] = preferredVersion;
		overrideCount++;
	}
}

console.log( `Adding ${ overrideCount } transitive dependency overrides` );

if ( ! DRY_RUN ) {
	// Re-read root package.json in case it was already modified above.
	const currentRootContent = fs.readFileSync( rootPkgPath, 'utf8' );
	const currentRootPkg = JSON.parse( currentRootContent );

	// Back up root package.json if not already backed up.
	if ( ! backups.has( rootPkgPath ) ) {
		backups.set( rootPkgPath, rootPkgContent );
	}

	currentRootPkg.overrides = transOverrides;
	fs.writeFileSync(
		rootPkgPath,
		JSON.stringify( currentRootPkg, null, '\t' ) + '\n'
	);
}

if ( DRY_RUN ) {
	console.log( 'Dry run — no changes made' );
	process.exit( 0 );
}

// 5. Delete lockfile and regenerate.
console.log( 'Deleting lockfile...' );
fs.unlinkSync( lockPath );

console.log( 'Running npm install --package-lock-only --ignore-scripts ...' );
try {
	execSync( 'npm install --package-lock-only --ignore-scripts', {
		cwd: ROOT,
		stdio: 'inherit',
		timeout: 10 * 60 * 1000,
	} );
} finally {
	// 6. Restore original package.json files (always, even if install fails).
	console.log( 'Restoring original package.json files...' );
	for ( const [ filePath, original ] of backups ) {
		fs.writeFileSync( filePath, original );
	}
}

// 7. Patch the lockfile to restore original caret/tilde ranges.
// Running `npm install` again would re-resolve transitive deps, undoing the
// version pinning from step 4. Instead, we directly edit the lockfile entries
// to match the original package.json dependency ranges.
console.log( 'Patching lockfile with original package.json ranges...' );

const newLock = JSON.parse( fs.readFileSync( lockPath, 'utf8' ) );

for ( const [ pkgJsonPath, originalContent ] of backups ) {
	const originalPkg = JSON.parse( originalContent );
	const relativePath = path.relative( ROOT, path.dirname( pkgJsonPath ) );
	// Root package is "" in the lockfile, workspace packages are "packages/foo".
	const lockKey = relativePath === '' ? '' : relativePath;
	const lockEntry = newLock.packages[ lockKey ];

	if ( ! lockEntry ) {
		continue;
	}

	for ( const depField of [ 'dependencies', 'devDependencies' ] ) {
		if ( originalPkg[ depField ] && lockEntry[ depField ] ) {
			for ( const [ name, range ] of Object.entries(
				originalPkg[ depField ]
			) ) {
				if ( lockEntry[ depField ][ name ] ) {
					lockEntry[ depField ][ name ] = range;
				}
			}
		}
	}
}

fs.writeFileSync( lockPath, JSON.stringify( newLock, null, '\t' ) + '\n' );

console.log(
	'Done! Lockfile regenerated with nested structure and pinned versions.'
);
console.log( 'Run `npm install` to install from the new lockfile.' );

@manzoorwanijk
Copy link
Member Author

The GitHub actions worker seems to be running out of resources/space due to nested node_modules and thus there are CI failures, making even a stronger case for pnpm migration - #74689

@manzoorwanijk manzoorwanijk force-pushed the update/set-npm-install-strategy branch 3 times, most recently from d1f975d to 06d56bd Compare February 19, 2026 08:21
owlstronaut pushed a commit to npm/cli that referenced this pull request Feb 20, 2026
#8996)

We're looking at using `install-strategy=linked` in the [Gutenberg
monorepo](https://github.com/WordPress/gutenberg) (~200 workspace
packages), which powers the WordPress Block Editor. While [testing it in
a PR](WordPress/gutenberg#75213), we ran into
several issues with the linked strategy that this PR fixes.

## Summary

1. Scoped workspace packages were losing their `@scope/` prefix in
`node_modules` because the symlink name came from the folder basename
instead of the package name.
2. Aliased packages (e.g. `"prettier": "npm:custom-prettier@3.0.3"`) in
workspace projects were getting symlinked under the real package name
instead of the alias, so `require('prettier')` would fail.
3. With `legacy-peer-deps = true`, peer dependencies weren't being
placed alongside packages in the store, so `require()` calls for peer
deps failed from within the store.
4. With `strict-peer-deps = true`, the linked strategy could crash with
`Cannot read properties of undefined` when store entries or parent nodes
were missing for excluded peer deps.

## Root cause

`assignCommonProperties` was using a single `result.name` for both
consumer-facing symlinks and store-internal paths. For workspaces,
`node.name` comes from the folder basename (missing the scope). For
aliases, `node.packageName` gives the real name but we need the alias
for the consumer symlink.

Separately, `legacy-peer-deps` tells the arborist to skip creating peer
dep edges entirely, so the isolated reifier never saw them and never
placed them in the store. And `strict-peer-deps` can cause nodes to be
excluded from the tree while still being referenced by edges, leading to
undefined lookups.

## Changes

- Split proxy identity into `result.name` (consumer-facing: alias or
scoped workspace name) and `result.packageName` (store-internal: real
package name from `package.json`). Store paths (`getKey`, `treeHash`,
`generateChild`, `processEdges`, `processDeps`) use `packageName`;
consumer symlinks keep using `name`.
- When `legacyPeerDeps` is enabled, resolve missing peer dep edges from
the tree via `node.resolve()` so they still get symlinked in the store.
- Guard against undefined `from` and `target` nodes in
`processEdges`/`processDeps` to prevent crashes with `strict-peer-deps`.
- Guard `idealTree.children.get(ws)` in `reify.js` since the isolated
tree uses an array for `children`, not a Map.
- Test fixture updates: `recursive: true` for `mkdirSync`, scoped
workspace glob support.
- New tests for scoped workspace packages, aliased packages in
workspaces, and peer deps with `legacyPeerDeps`.

## References

Fixes #6122
manzoorwanijk added a commit to manzoorwanijk/npm-cli that referenced this pull request Feb 23, 2026
npm#8996)

We're looking at using `install-strategy=linked` in the [Gutenberg
monorepo](https://github.com/WordPress/gutenberg) (~200 workspace
packages), which powers the WordPress Block Editor. While [testing it in
a PR](WordPress/gutenberg#75213), we ran into
several issues with the linked strategy that this PR fixes.

## Summary

1. Scoped workspace packages were losing their `@scope/` prefix in
`node_modules` because the symlink name came from the folder basename
instead of the package name.
2. Aliased packages (e.g. `"prettier": "npm:custom-prettier@3.0.3"`) in
workspace projects were getting symlinked under the real package name
instead of the alias, so `require('prettier')` would fail.
3. With `legacy-peer-deps = true`, peer dependencies weren't being
placed alongside packages in the store, so `require()` calls for peer
deps failed from within the store.
4. With `strict-peer-deps = true`, the linked strategy could crash with
`Cannot read properties of undefined` when store entries or parent nodes
were missing for excluded peer deps.

## Root cause

`assignCommonProperties` was using a single `result.name` for both
consumer-facing symlinks and store-internal paths. For workspaces,
`node.name` comes from the folder basename (missing the scope). For
aliases, `node.packageName` gives the real name but we need the alias
for the consumer symlink.

Separately, `legacy-peer-deps` tells the arborist to skip creating peer
dep edges entirely, so the isolated reifier never saw them and never
placed them in the store. And `strict-peer-deps` can cause nodes to be
excluded from the tree while still being referenced by edges, leading to
undefined lookups.

## Changes

- Split proxy identity into `result.name` (consumer-facing: alias or
scoped workspace name) and `result.packageName` (store-internal: real
package name from `package.json`). Store paths (`getKey`, `treeHash`,
`generateChild`, `processEdges`, `processDeps`) use `packageName`;
consumer symlinks keep using `name`.
- When `legacyPeerDeps` is enabled, resolve missing peer dep edges from
the tree via `node.resolve()` so they still get symlinked in the store.
- Guard against undefined `from` and `target` nodes in
`processEdges`/`processDeps` to prevent crashes with `strict-peer-deps`.
- Guard `idealTree.children.get(ws)` in `reify.js` since the isolated
tree uses an array for `children`, not a Map.
- Test fixture updates: `recursive: true` for `mkdirSync`, scoped
workspace glob support.
- New tests for scoped workspace packages, aliased packages in
workspaces, and peer deps with `legacyPeerDeps`.

## References

Fixes npm#6122
@manzoorwanijk manzoorwanijk force-pushed the update/set-npm-install-strategy branch from 06d56bd to 7050ffe Compare February 23, 2026 07:14
@manzoorwanijk manzoorwanijk changed the title Try npm install strategy Try npm install-strategy=nested Feb 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Package] Components /packages/components [Package] Core data /packages/core-data [Package] Notices /packages/notices [Package] Priority Queue /packages/priority-queue [Package] Redux Routine /packages/redux-routine [Package] Theme /packages/theme [Type] Code Quality Issues or PRs that relate to code quality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant