-
-
Notifications
You must be signed in to change notification settings - Fork 238
Expand file tree
/
Copy pathreactCompilerPreset.ts
More file actions
34 lines (32 loc) · 1.1 KB
/
reactCompilerPreset.ts
File metadata and controls
34 lines (32 loc) · 1.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import type {
ReactCompilerBabelPluginOptions,
RolldownBabelPreset,
} from '#optionalTypes'
export const defaultCodeFilter =
/forwardRef|memo|(?:const|let|var|function)\s+(?:[A-Z]|use[A-Z0-9])|(?:[A-Z]|use[A-Z0-9])[^\s:=(){}[\],;]*\s*(?:\(|[:=]\s*(?:function|\())/
export const reactCompilerPreset = (
options: Pick<
ReactCompilerBabelPluginOptions,
'compilationMode' | 'target'
> = {},
): RolldownBabelPreset => ({
preset: () => ({
plugins: [['babel-plugin-react-compiler', options]],
}),
rolldown: {
filter: {
// should be lax than https://github.com/facebook/react/blob/9c0323e2cf9be543d6eaa44419598af56922603f/compiler/packages/babel-plugin-react-compiler/src/Entrypoint/Program.ts#L842-L863
code:
options.compilationMode === 'annotation'
? /['"]use memo['"]/
: defaultCodeFilter,
},
applyToEnvironmentHook: (env) => env.config.consumer === 'client',
optimizeDeps: {
include:
options.target === '17' || options.target === '18'
? ['react-compiler-runtime']
: ['react/compiler-runtime'],
},
},
})