11import type { Plugin } from 'rollup'
2- import { getTsconfig } from 'get-tsconfig'
3- import { Options as SWCOptions , transform } from '@swc/core'
2+ import { getTsconfig , TsConfigJson } from 'get-tsconfig'
3+ import { JscTarget , Options as SWCOptions , transform } from '@swc/core'
44import extend from '@techor/extend'
55import { FilterPattern , createFilter } from '@rollup/pluginutils'
66
@@ -10,29 +10,30 @@ export type Options = SWCOptions & {
1010 tsconfigFile ?: string | boolean
1111}
1212
13- export default function swc ( { tsconfigFile, include, exclude, minify, ...options } : Options = { } ) : Plugin {
13+ export default function swc ( { tsconfigFile, include, exclude, minify, ...options } : Options = { } , tsconfig : TsConfigJson ) : Plugin {
1414 const filter = createFilter ( include , exclude )
15- const compilerOptions = tsconfigFile === false ? { } : getTsconfig ( '.' , tsconfigFile === true ? undefined : tsconfigFile ) ?. config ?. compilerOptions || { }
1615 let swcOptions = {
1716 jsc : {
18- target : compilerOptions . target ,
1917 parser : { } ,
2018 transform : { }
2119 }
2220 } as SWCOptions
23- if ( compilerOptions . experimentalDecorators ) {
21+ swcOptions = extend ( swcOptions , options )
22+ if ( tsconfig ?. compilerOptions ?. experimentalDecorators ) {
2423 swcOptions . jsc . parser . decorators = true
2524 swcOptions . jsc . transform . legacyDecorator = true
26- swcOptions . jsc . transform . decoratorMetadata = compilerOptions . emitDecoratorMetadata
25+ swcOptions . jsc . transform . decoratorMetadata = tsconfig ?. compilerOptions . emitDecoratorMetadata
2726 }
28- if ( compilerOptions . jsx ) {
27+ if ( tsconfig ?. compilerOptions ? .jsx ) {
2928 swcOptions . jsc . transform . react = {
30- pragma : compilerOptions . jsxFactory ,
31- pragmaFrag : compilerOptions . jsxFragmentFactory ,
32- importSource : compilerOptions . jsxImportSource ,
29+ pragma : tsconfig ?. compilerOptions . jsxFactory ,
30+ pragmaFrag : tsconfig ?. compilerOptions . jsxFragmentFactory ,
31+ importSource : tsconfig ?. compilerOptions . jsxImportSource ,
3332 }
3433 }
35- swcOptions = extend ( swcOptions , options )
34+ if ( tsconfig ?. compilerOptions ?. target ) {
35+ swcOptions . jsc . target = tsconfig ?. compilerOptions . target . toLocaleLowerCase ( ) as JscTarget
36+ }
3637 return {
3738 name : 'techor-swc' ,
3839 async transform ( code , id ) {
0 commit comments