Skip to content

Refzlund/unplugin-swc-module

 
 

Repository files navigation

A fork of unplugin-swc by egoist — which makes it into a module, that can purposefully be used in a Vite project such as SvelteKit.


unplugin-swc

npm version

SWC plugin for Vite and Rollup.

Install

Clone project and build using tsc build. npm pack, and include that file to a project pnpm add ./unplugin-swc.tgz

Usage

Vite or Rollup:

import swc from 'unplugin-swc'

export default {
   plugins: [
      swc.vite({
         jsc: {
            target: 'es2022' // Does not accept `esnext`	}
         }
      })
   ]
}

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 type

If you wish to disable this behavior and use .swcrc to control above jsc options, you can use tsconfigFile option:

// 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.

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 options to merge with the default one.

License

MIT © EGOIST

About

SWC Plugin for Vite

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 100.0%