Skip to content

chore: trim runtime dependency footprint#639

Open
harlan-zw wants to merge 3 commits into
mainfrom
chore/trim-runtime-deps
Open

chore: trim runtime dependency footprint#639
harlan-zw wants to merge 3 commits into
mainfrom
chore/trim-runtime-deps

Conversation

@harlan-zw

@harlan-zw harlan-zw commented Jul 3, 2026

Copy link
Copy Markdown
Collaborator

🔗 Linked issue

None

❓ Type of change

  • 📖 Documentation
  • 🐞 Bug fix
  • 👌 Enhancement
  • ✨ New feature
  • 🧹 Chore
  • ⚠️ Breaking change

📚 Description

Moves UnoCSS and Lightning CSS packages out of runtime dependencies where Nuxt or the selected CSS provider can supply them, and drops culori and tinyglobby (unused). Adds optional module resolution and a packed install smoke test that installs the tarball in clean pnpm and npm consumer apps.

@vue/compiler-sfc, oxc-parser, and oxc-walker stay as direct dependencies: Nuxt already ships them so they dedupe to zero extra install cost, and keeping them direct avoids any resolution failure modes if Nuxt's internals change.

The typecheck script now stubs the module before running Nuxt typecheck so the required check works from a fresh checkout.

📊 Fresh install benchmark

Measured with package metadata tarballs from main and this branch, with catalog: specs resolved, installed into clean Nuxt 4.4.8 apps using pnpm 11.9.0.

Metric Before After
Runtime dependencies 32 27
Peer dependencies 14 17 (+3 optional)

Removed from the incremental fresh install: @unocss/config, @unocss/core, culori, lightningcss, lightningcss-linux-x64-gnu, unconfig, unconfig-core, colorette, and @quansync/fs — this covers the bulk of the original ~15 MB / 16-package saving, since the retained parser packages dedupe against Nuxt's own copies.

@pkg-pr-new

pkg-pr-new Bot commented Jul 3, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/nuxt-og-image@639

commit: fbbdac6

harlan-zw added 2 commits July 3, 2026 23:37
@vue/compiler-sfc, oxc-parser, and oxc-walker dedupe against Nuxt's own
copies, so optionalizing them saved nothing while adding resolution
failure modes. Restore them as direct deps and keep the optional-peer
handling for @unocss/*, lightningcss, culori, and tinyglobby.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant