mirror of
https://github.com/oxc-project/oxc.git
synced 2026-09-14 19:36:11 +08:00
b6f1458dec
### 💥 BREAKING CHANGES -a33788east: [**BREAKING**] Group class heritage into `ClassHeritage` (#25360) (camc314) -5c5cdcdast: [**BREAKING**] Narrow `TSInterfaceHeritage::expression` to TSTypeName (#24360) (camc314) -6be314fast: [**BREAKING**] Remove duplicated `VariableDeclarator::kind` (#25319) (camc314) -44fd320ast: [**BREAKING**] Split TS external modules & Namespace Declarations (#25284) (camc314) ### 🚀 Features -9a37c41napi: Restructure React transform options (#25326) (Boshen) -b3c1b30allocator: Add `ArenaVec::push_mut` (#25338) (overlookmotel) ### 🐛 Bug Fixes -bbd6ed3codegen: Wrap string literal in parens after directives (#25435) (overlookmotel) -d07a293codegen: Preserve cast parentheses in conditional tests (#25115) (camc314) -8b7d441codegen: Preserve satisfies parentheses before bitwise operators (#25113) (camc314) -e0fb2d7minifier: Avoid unsafe return removal in labeled blocks (#25406) (Armano) -c49f4ceparser: Preserve terminal license comments (#25400) (camc314) -9d19ab3transform_react: Downgrade nonfatal compiler diagnostics (#25418) (Boshen) -937825creact_compiler: Disable exhaustive memo validation by default (#25417) (Boshen) -12937b3parser: Reject comma expressions in class fields (#25385) (Cameron) -7d8a9b5react_compiler: Preserve hook spans for React Refresh (#25393) (Boshen) -9e93ba6parser: Reset auto-accessor initializer context (#25384) (camc314) -cc2e28dparser: Reject trailing tokens in `Parser::parse_expression` (#25371) (camc314) -697c629minifier: Preserve Annex B labeled-function bindings in implicit-return rewrite (#25349) (Armano) -4d723caparser: Report TS1035 for quoted module names (#25305) (camc314) -0c9b980semantic: Report module declaration diagnostics (#25285) (camc314) -2a1058anapi: Omit parser header from WASI declarations (#25254) (camc314) ### ⚡ Performance -dd1430bsemantic: Avoid allocation in class overload check (#25440) (camc314) -e420816parser: Optimize trailing comma tracking (#25376) (camc314) -6529d1aminifier: Short-circuit scope check when alternate already determines result (#25318) (Armano) ### 📚 Documentation -fe111eballocator: Improve doc comments for `Arena` methods (#24922) (overlookmotel)
Oxc Transformer Plugins
Specialized transformation plugins for common JavaScript and TypeScript patterns.
Overview
This crate provides specific transformation plugins that can be used independently or as part of the broader oxc transformation pipeline. These plugins handle common transformation needs like global variable injection and module format conversion.
Key Features
- Global variable injection: Add global variables to modules
- Module runner transforms: Transform modules for different execution environments
- Global defines replacement: Replace compile-time constants
- Composable plugins: Use individually or combine multiple plugins
Architecture
Plugin System
Each plugin implements the transformation logic for a specific use case:
- Focused responsibility: Each plugin handles one type of transformation
- Traverse integration: Uses oxc's traversal system for efficient AST walking
- Composable: Multiple plugins can be applied in sequence
- Context-aware: Access to semantic information when needed
Common Use Cases
Build-time Optimizations
- Dead code elimination: Remove unreachable code paths
- Constant folding: Replace compile-time constants
- Environment variables: Inject environment-specific values
Module System Compatibility
- Polyfill injection: Add necessary polyfills for target environments
- Global shimming: Provide Node.js globals in browser environments
- Format conversion: Transform between module formats
Development Tools
- Debug injection: Add development-time debugging code
- Hot module replacement: Support for HMR systems
- Testing utilities: Inject test-specific globals
Integration Points
These plugins integrate with:
- oxc_transformer: Core transformation infrastructure
- oxc_traverse: AST traversal and mutation
- Build tools: Webpack, Vite, Rollup, and other bundlers
- CLI tools: Direct usage in command-line transformations
The plugin architecture enables extensible, composable transformations while maintaining high performance through oxc's efficient traversal system.