Skip to content

feat: switch from @linaria/shaker to @griffel/transform-shaker#795

Merged
layershifter merged 4 commits intomainfrom
feat/switch-to-transform-shaker
Mar 10, 2026
Merged

feat: switch from @linaria/shaker to @griffel/transform-shaker#795
layershifter merged 4 commits intomainfrom
feat/switch-to-transform-shaker

Conversation

@layershifter
Copy link
Copy Markdown
Member

@layershifter layershifter commented Mar 10, 2026

Summary

Replaces the external @linaria/shaker dependency with the internal @griffel/transform-shaker package for tree-shaking during build-time evaluation.

Breaking changes

  • babelOptions removed from TransformOptions and WebpackLoaderOptions — Babel is no longer used for code transformation; oxc-transform handles TypeScript/JSX stripping in @griffel/transform-shaker directly
  • StrictOptions type removed — replaced by EvalRule[] directly
  • Evaluator signature simplified — from (filename, options, text, only) to (filename, text, only)
  • @griffel/transform-shaker published as a new public package (initial release)
  • oxc-transform removed from @griffel/transform dependencies (moved to @griffel/transform-shaker)

Changes

  • packages/transform-shaker/package.json — remove private: true
  • packages/transform/package.json — add @griffel/transform-shaker dep, remove oxc-transform
  • packages/transform/src/evaluation/types.mts — remove StrictOptions, simplify Evaluator type
  • packages/transform/src/evaluation/module.mts — take rules: EvalRule[] directly instead of StrictOptions
  • packages/transform/src/evaluation/vmEvaluator.mts — remove babelOptions param
  • packages/transform/src/evaluation/batchEvaluator.mts — remove babelOptions param
  • packages/transform/src/evaluation/hybridEvaluator.mts — update evaluator call sites
  • packages/transform/src/transformSync.mts — remove babelOptions from TransformOptions, remove typecast
  • packages/webpack-plugin/src/webpackLoader.mts — remove babelOptions from loader options
  • Delete config-babel-options fixture (no longer applicable)
  • packages/transform-shaker/src/ — simplify Evaluator type and remove dead options

Test plan

  • nx test transform-shaker — 34 tests pass
  • nx test transform — 65 tests pass

🤖 Generated with Claude Code

@layershifter layershifter requested a review from a team as a code owner March 10, 2026 11:12
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 10, 2026

📊 Bundle size report

✅ No changes found

@layershifter layershifter force-pushed the feat/switch-to-transform-shaker branch from 10a0a54 to 0f76fb8 Compare March 10, 2026 11:31
layershifter and others added 3 commits March 10, 2026 12:33
Replace the external @linaria/shaker dependency with the internal
@griffel/transform-shaker package. Since the new shaker produces ESM
output (vs Babel-compiled CJS from the old shaker), add an ESM→CJS
converter in Module.evaluate so code can run inside vm.Script's
function wrapper.

Also fix several shaker graph-builder bugs uncovered during integration:
- ImportDeclaration not kept alive when its bindings are referenced
- ExportNamedDeclaration declarators removed from shaken output
- Missing TemplateLiteral:expressions and SpreadElement:argument handlers
- Computed Property:key not treated as a variable reference

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…signature

- Remove StrictOptions type (was just { rules: EvalRule[] })
- Remove babelOptions from TransformOptions and all call sites
- Simplify Evaluator to (filename, text, only) => [string, Map | null]
- Module class now takes rules: EvalRule[] directly
- Remove config-babel-options fixture and test
- Remove private: true from transform-shaker
- Add @griffel/transform-shaker dependency, remove oxc-transform

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@layershifter layershifter force-pushed the feat/switch-to-transform-shaker branch from 0f76fb8 to d7b50fd Compare March 10, 2026 11:41
@layershifter layershifter changed the title feat(transform): replace @linaria/shaker with @griffel/transform-shaker feat: switch from @linaria/shaker to @griffel/transform-shaker Mar 10, 2026
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@layershifter layershifter merged commit 4e637d6 into main Mar 10, 2026
4 checks passed
@layershifter layershifter deleted the feat/switch-to-transform-shaker branch March 10, 2026 11:49
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.

2 participants