{"id":26257115,"url":"https://github.com/sunny-117/oxc-loader","last_synced_at":"2026-02-05T18:31:26.714Z","repository":{"id":271185053,"uuid":"912659438","full_name":"Sunny-117/oxc-loader","owner":"Sunny-117","description":"webpack/Rspack loader for Oxc","archived":false,"fork":false,"pushed_at":"2026-01-17T07:02:31.000Z","size":319,"stargazers_count":5,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-17T18:13:18.869Z","etag":null,"topics":["bundler","loader","loaders","oxc","oxc-loader","oxc-parser","oxc-resolver","oxc-transform","plugin","rspack","swc-loader","typescript","webpack","webpack-loader"],"latest_commit_sha":null,"homepage":"https://deepwiki.com/Sunny-117/oxc-loader","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Sunny-117.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-06T06:05:29.000Z","updated_at":"2026-01-17T07:02:35.000Z","dependencies_parsed_at":"2025-01-06T06:14:45.965Z","dependency_job_id":"847353cb-59d7-46e5-a1fc-bbb32e2de0c0","html_url":"https://github.com/Sunny-117/oxc-loader","commit_stats":null,"previous_names":["sunny-117/oxc-loader"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Sunny-117/oxc-loader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunny-117%2Foxc-loader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunny-117%2Foxc-loader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunny-117%2Foxc-loader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunny-117%2Foxc-loader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sunny-117","download_url":"https://codeload.github.com/Sunny-117/oxc-loader/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunny-117%2Foxc-loader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29128691,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T18:31:02.507Z","status":"ssl_error","status_checked_at":"2026-02-05T18:29:43.962Z","response_time":65,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bundler","loader","loaders","oxc","oxc-loader","oxc-parser","oxc-resolver","oxc-transform","plugin","rspack","swc-loader","typescript","webpack","webpack-loader"],"created_at":"2025-03-13T20:28:24.607Z","updated_at":"2026-02-05T18:31:26.704Z","avatar_url":"https://github.com/Sunny-117.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# oxc-loader\n\n[![npm version][npm-version-src]][npm-version-href]\n[![npm downloads][npm-downloads-src]][npm-downloads-href]\n[![bundle][bundle-src]][bundle-href]\n[![JSDocs][jsdocs-src]][jsdocs-href]\n[![License][license-src]][license-href]\n\nA high-performance webpack/Rspack loader for transforming JavaScript and TypeScript using [Oxc](https://github.com/oxc-project/oxc).\n\n## Features\n\n- ⚡ **Ultra Fast**: 3-5x faster than SWC, 20-50x faster than Babel\n- 🔧 **TypeScript Support**: Transform TypeScript to JavaScript with type stripping\n- ⚛️ **JSX/TSX Support**: Transform React JSX with automatic runtime detection\n- 🔄 **React Fast Refresh**: Built-in support for React development\n- 📦 **Small Bundle**: Only 2MB vs SWC's 37MB\n- 🛠️ **Webpack \u0026 Rspack**: Compatible with both bundlers\n- 🗺️ **Source Maps**: Full source map support\n- ⚙️ **Configurable**: Extensive configuration options\n- 📋 **tsconfig.json Support**: Automatic detection and configuration from TypeScript config\n\n## Node.js Compatibility\n\n- Node.js 20.19 or higher\n\n## Installation\n\n```bash\nnpm install oxc-loader\n# or\nyarn add oxc-loader\n# or\npnpm add oxc-loader\n# or\nbun add oxc-loader\n```\n\n## Usage\n\n### Basic Webpack Configuration\n\n```javascript\n// webpack.config.js\nmodule.exports = {\n  module: {\n    rules: [\n      {\n        test: /\\.(js|jsx|ts|tsx)$/,\n        exclude: /node_modules/,\n        use: {\n          loader: 'oxc-loader',\n          options: {\n            // Options here\n          }\n        }\n      }\n    ]\n  }\n}\n```\n\n### Basic Rspack Configuration\n\n```javascript\n// rspack.config.js\nmodule.exports = {\n  module: {\n    rules: [\n      {\n        test: /\\.(js|jsx|ts|tsx)$/,\n        exclude: /node_modules/,\n        use: {\n          loader: 'oxc-loader',\n          options: {\n            // Options here\n          }\n        }\n      }\n    ]\n  }\n}\n```\n\n## Configuration Options\n\n### Basic Options\n\n```typescript\ninterface OxcLoaderOptions {\n  // Enable source map generation (default: true)\n  sourcemap?: boolean\n\n  // Enable React Fast Refresh for development (default: false)\n  refresh?: boolean\n\n  // Automatically detect and configure JSX based on file extension (default: true)\n  autoDetectJsx?: boolean\n\n  // All oxc-transform options are also supported\n  typescript?: TypeScriptOptions\n  jsx?: JsxOptions\n  target?: string | string[]\n  // ... and more\n}\n```\n\n### TypeScript Configuration\n\n```javascript\n// webpack.config.js\nmodule.exports = {\n  module: {\n    rules: [\n      {\n        test: /\\.tsx?$/,\n        use: {\n          loader: 'oxc-loader',\n          options: {\n            typescript: {\n              onlyRemoveTypeImports: true,\n              declaration: {\n                stripInternal: true\n              }\n            }\n          }\n        }\n      }\n    ]\n  }\n}\n```\n\n### JSX Configuration\n\n```javascript\n// webpack.config.js\nmodule.exports = {\n  module: {\n    rules: [\n      {\n        test: /\\.jsx?$/,\n        use: {\n          loader: 'oxc-loader',\n          options: {\n            jsx: {\n              runtime: 'automatic', // or 'classic'\n              development: process.env.NODE_ENV === 'development',\n              importSource: 'react'\n            }\n          }\n        }\n      }\n    ]\n  }\n}\n```\n\n### React Fast Refresh\n\n```javascript\n// webpack.config.js\nmodule.exports = {\n  module: {\n    rules: [\n      {\n        test: /\\.(jsx|tsx)$/,\n        use: {\n          loader: 'oxc-loader',\n          options: {\n            refresh: process.env.NODE_ENV === 'development',\n            jsx: {\n              runtime: 'automatic',\n              development: true\n            }\n          }\n        }\n      }\n    ]\n  }\n}\n```\n\n### tsconfig.json Support\n\noxc-loader automatically reads and applies relevant settings from your `tsconfig.json` file. This feature is enabled by default and helps ensure consistency between your TypeScript configuration and the transformation process.\n\n#### Supported tsconfig.json Options\n\nThe following TypeScript compiler options are automatically mapped to oxc-transform settings:\n\n- **`target`**: Maps to oxc-transform's `target` option\n- **`jsx`**: Configures JSX transformation mode\n- **`jsxFactory`**: Sets custom JSX pragma\n- **`jsxFragmentFactory`**: Sets custom JSX fragment pragma\n- **`jsxImportSource`**: Sets JSX import source for automatic runtime\n- **`allowImportingTsExtensions`**: Enables import extension rewriting\n- **`verbatimModuleSyntax`**: Enables type-only import removal\n\n## Examples\n\n### Complete Webpack Configuration\n\n```javascript\n// webpack.config.js\nconst path = require('node:path')\n\nmodule.exports = {\n  entry: './src/index.tsx',\n  output: {\n    path: path.resolve(__dirname, 'dist'),\n    filename: 'bundle.js'\n  },\n  module: {\n    rules: [\n      {\n        test: /\\.(js|jsx|ts|tsx)$/,\n        exclude: /node_modules/,\n        use: {\n          loader: 'oxc-loader',\n          options: {\n            // Enable source maps\n            sourcemap: true,\n\n            // Enable React Fast Refresh in development\n            refresh: process.env.NODE_ENV === 'development',\n\n            // TypeScript configuration\n            typescript: {\n              onlyRemoveTypeImports: true\n            },\n\n            // JSX configuration (auto-detected for .jsx/.tsx files)\n            jsx: {\n              runtime: 'automatic',\n              development: process.env.NODE_ENV === 'development'\n            },\n\n            // Target modern browsers\n            target: ['es2020', 'chrome80', 'firefox80', 'safari14']\n          }\n        }\n      }\n    ]\n  },\n  resolve: {\n    extensions: ['.ts', '.tsx', '.js', '.jsx']\n  }\n}\n```\n\n### Rspack Configuration\n\n```javascript\n// rspack.config.js\nconst path = require('node:path')\n\nmodule.exports = {\n  entry: './src/index.tsx',\n  output: {\n    path: path.resolve(__dirname, 'dist'),\n    filename: 'bundle.js'\n  },\n  module: {\n    rules: [\n      {\n        test: /\\.(js|jsx|ts|tsx)$/,\n        exclude: /node_modules/,\n        use: {\n          loader: 'oxc-loader',\n          options: {\n            refresh: true, // Enable React Fast Refresh\n            typescript: {\n              onlyRemoveTypeImports: true\n            }\n          }\n        }\n      }\n    ]\n  },\n  resolve: {\n    extensions: ['.ts', '.tsx', '.js', '.jsx']\n  }\n}\n```\n\n## Performance Comparison\n\n| Tool | Transform Speed | Memory Usage | Bundle Size | Packages |\n|------|----------------|--------------|-------------|----------|\n| **oxc-loader** | **Baseline** | **51 MB** | **2 MB** | **2** |\n| swc-loader | 3-5x slower | 67 MB | 37 MB | Multiple |\n| babel-loader | 20-50x slower | 172 MB | 21 MB | 170+ |\n\n*Benchmarks based on oxc-project/bench-transformer*\n\n## Migration Guide\n\n### From babel-loader\n\n```diff\n// webpack.config.js\nmodule.exports = {\n  module: {\n    rules: [\n      {\n        test: /\\.(js|jsx|ts|tsx)$/,\n        exclude: /node_modules/,\n        use: {\n-         loader: 'babel-loader',\n+         loader: 'oxc-loader',\n          options: {\n-           presets: [\n-             '@babel/preset-env',\n-             '@babel/preset-react',\n-             '@babel/preset-typescript'\n-           ]\n+           jsx: {\n+             runtime: 'automatic'\n+           },\n+           typescript: {\n+             onlyRemoveTypeImports: true\n+           }\n          }\n        }\n      }\n    ]\n  }\n}\n```\n\n### From swc-loader\n\n```diff\n// webpack.config.js\nmodule.exports = {\n  module: {\n    rules: [\n      {\n        test: /\\.(js|jsx|ts|tsx)$/,\n        exclude: /node_modules/,\n        use: {\n-         loader: 'swc-loader',\n+         loader: 'oxc-loader',\n          options: {\n-           jsc: {\n-             parser: {\n-               syntax: 'typescript',\n-               tsx: true\n-             },\n-             transform: {\n-               react: {\n-                 runtime: 'automatic'\n-               }\n-             }\n-           }\n+           jsx: {\n+             runtime: 'automatic'\n+           },\n+           typescript: {\n+             onlyRemoveTypeImports: true\n+           }\n          }\n        }\n      }\n    ]\n  }\n}\n```\n\n## Troubleshooting\n\n### Native Binding Issues\n\nIf you encounter native binding errors, try:\n\n```bash\n# Remove node_modules and reinstall\nrm -rf node_modules package-lock.json\nnpm install\n\n# Or with pnpm\nrm -rf node_modules pnpm-lock.yaml\npnpm install\n```\n\n### TypeScript Errors\n\nMake sure your `tsconfig.json` includes the necessary compiler options:\n\n```json\n{\n  \"compilerOptions\": {\n    \"jsx\": \"react-jsx\",\n    \"target\": \"ES2020\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\"\n  }\n}\n```\n\n## Contributing\n\nContributions are welcome! Please read our [contributing guide](CONTRIBUTING.md) for details.\n\n## License\n\n[MIT](./LICENSE) License © 2024-PRESENT [Sunny-117](https://github.com/Sunny-117)\n\n## Related Projects\n\n- [oxc](https://github.com/oxc-project/oxc) - The JavaScript Oxidation Compiler\n- [oxc-transform](https://www.npmjs.com/package/oxc-transform) - Standalone transform package\n- [unplugin-oxc](https://github.com/unplugin/unplugin-oxc) - Oxc integration for unplugin\n- [webpack](https://webpack.js.org/) - Module bundler\n- [rspack](https://rspack.dev/) - Fast Rust-based bundler\n\n\u003c!-- Badges --\u003e\n\n[npm-version-src]: https://img.shields.io/npm/v/oxc-loader?style=flat\u0026colorA=080f12\u0026colorB=1fa669\n[npm-version-href]: https://npmjs.com/package/oxc-loader\n[npm-downloads-src]: https://img.shields.io/npm/dm/oxc-loader?style=flat\u0026colorA=080f12\u0026colorB=1fa669\n[npm-downloads-href]: https://npmjs.com/package/oxc-loader\n[bundle-src]: https://img.shields.io/bundlephobia/minzip/oxc-loader?style=flat\u0026colorA=080f12\u0026colorB=1fa669\u0026label=minzip\n[bundle-href]: https://bundlephobia.com/result?p=oxc-loader\n[license-src]: https://img.shields.io/github/license/Sunny-117/oxc-loader.svg?style=flat\u0026colorA=080f12\u0026colorB=1fa669\n[license-href]: https://github.com/Sunny-117/oxc-loader/blob/main/LICENSE\n[jsdocs-src]: https://img.shields.io/badge/jsdocs-reference-080f12?style=flat\u0026colorA=080f12\u0026colorB=1fa669\n[jsdocs-href]: https://www.jsdocs.io/package/oxc-loader\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunny-117%2Foxc-loader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsunny-117%2Foxc-loader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunny-117%2Foxc-loader/lists"}