Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/unplugin/unplugin-swc
SWC plugin for Vite and Rollup
https://github.com/unplugin/unplugin-swc
Last synced: 3 days ago
JSON representation
SWC plugin for Vite and Rollup
- Host: GitHub
- URL: https://github.com/unplugin/unplugin-swc
- Owner: unplugin
- License: mit
- Created: 2021-11-12T12:43:30.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T17:17:21.000Z (5 days ago)
- Last Synced: 2024-10-29T18:43:13.663Z (5 days ago)
- Language: TypeScript
- Homepage:
- Size: 591 KB
- Stars: 234
- Watchers: 1
- Forks: 13
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# unplugin-swc
[![npm version](https://badgen.net/npm/v/unplugin-swc)](https://npm.im/unplugin-swc)
> [SWC](https://swc.rs/) plugin for Vite and Rollup.
## Install
```bash
npm i unplugin-swc @swc/core -D
```## Usage
Vite or Rollup:
```ts
import swc from 'unplugin-swc'export default {
plugins: [
// Vite plugin
swc.vite(),
// Rollup plugin
swc.rollup(),
],
}
```### `tsconfig.json`
Following SWC options are inferred from `tsconfig.json`:
- `jsc.parser.syntax`: based on file extension
- `jsc.parser.jsx`, `parser.tsx`: `compilerOptions.jsx`
- `jsc.parser.decorators`: `compilerOptions.experimentalDecorators`
- `jsc.transform.react.pragma`: `compilerOptions.jsxFactory`
- `jsc.transform.react.pragmaFrag`: `compilerOptions.jsxFragmentFactory`
- `jsc.transform.react.importSource`: `compilerOptions.jsxImportSource`
- `jsc.transform.legacyDecorator`: `compilerOptions.experimentalDecorators`
- `jsc.transform.decoratorMetadata`: `compilerOptions.emitDecoratorMetadata`
- `jsc.keepClassNames`: when decorator is enabled, because original class name is required by libs like `type-graphql` to generate correct graphql typeIf you wish to disable this behavior and use `.swcrc` to control above `jsc` options, you can use `tsconfigFile` option:
```ts
// Or swc.rollup
swc.vite({
tsconfigFile: false,
})// It's also possible to use a custom tsconfig file instead of tsconfig.json
swc.vite({
tsconfigFile: './tsconfig.build.json',
})
```### Minification
Use the `minify: true` option, it only works for Rollup as Vite uses esbuild to minify the code and cannot be changed.
To have advanced control over the minification process, [use `jsc.minify` option in `.swcrc`](https://swc.rs/docs/configuration/minification).
### Vite
`esbuild` will be automatically disabled if you use this plugin.
## Options
This plugin accepts all `@swc/core` options, except for `jsc` which should be configured in `.swcrc` instead, and some extra options that are specific to this plugin:
### `options.tsconfigFile`
- Type: `boolean`, `string`
- Default: `tsconfig.json`Disable the use of tsconfig file or specify a custom one.
### `options.include`
- Type: `RegExp`
- Default: `/\.[jt]sx?$/`Files to include in the transpilation process.
### `options.exclude`
- Type: `RegExp`
- Default: `/node_modules/`Files to exclude in the transpilation process.
### `options.jsc`
- Type: `object`
Custom [jsc](https://swc.rs/docs/configuration/compilation) options to merge with the default one.
## License
MIT © [EGOIST](https://github.com/sponsors/egoist)