From 9686a8803e311d532c37fe919e0684feca91a04f Mon Sep 17 00:00:00 2001 From: Marvin Hagemeister Date: Mon, 22 Apr 2024 17:07:36 +0200 Subject: feat: add jsx precompile skip element option (#23457) This PR wires up a new `jsxPrecompileSkipElements` option in `compilerOptions` that can be used to exempt a list of elements from being precompiled with the `precompile` JSX transform. --- cli/args/mod.rs | 2 +- cli/schemas/config-file.v1.json | 8 ++++++++ cli/tsc/99_main_compiler.js | 3 +++ 3 files changed, 12 insertions(+), 1 deletion(-) (limited to 'cli') diff --git a/cli/args/mod.rs b/cli/args/mod.rs index 8d00f1416..60d9710de 100644 --- a/cli/args/mod.rs +++ b/cli/args/mod.rs @@ -185,7 +185,7 @@ pub fn ts_config_to_transpile_and_emit_options( jsx_fragment_factory: options.jsx_fragment_factory, jsx_import_source: options.jsx_import_source, precompile_jsx, - precompile_jsx_skip_elements: None, + precompile_jsx_skip_elements: options.jsx_precompile_skip_elements, transform_jsx, var_decl_imports: false, }, diff --git a/cli/schemas/config-file.v1.json b/cli/schemas/config-file.v1.json index 1fda522a8..a3bab7ad5 100644 --- a/cli/schemas/config-file.v1.json +++ b/cli/schemas/config-file.v1.json @@ -76,6 +76,14 @@ "default": "react", "markdownDescription": "Specify module specifier used to import the JSX factory functions when using jsx: `react-jsx*`.\n\nSee more: https://www.typescriptlang.org/tsconfig/#jsxImportSource" }, + "jsxPrecompileSkipElements": { + "description": "Specify list of elements that should be exempt from being precompiled when the jsx 'precompile' transform is used.", + "type": "array", + "items": { + "type": "string" + }, + "markdownDescription": "Specify list of elements that should be exempt from being precompiled when the jsx `precompile` transform is used." + }, "keyofStringsOnly": { "description": "Make keyof only return strings instead of string, numbers or symbols. Legacy option.", "type": "boolean", diff --git a/cli/tsc/99_main_compiler.js b/cli/tsc/99_main_compiler.js index c2c9a88d5..59fa75d77 100644 --- a/cli/tsc/99_main_compiler.js +++ b/cli/tsc/99_main_compiler.js @@ -958,6 +958,9 @@ delete Object.prototype.__proto__; if (config.jsx === "precompile") { config.jsx = "react-jsx"; } + if (config.jsxPrecompileSkipElements) { + delete config.jsxPrecompileSkipElements; + } return config; } -- cgit v1.2.3