diff options
-rw-r--r-- | cli/args/mod.rs | 2 | ||||
-rw-r--r-- | cli/schemas/config-file.v1.json | 8 | ||||
-rw-r--r-- | cli/tsc/99_main_compiler.js | 3 | ||||
-rw-r--r-- | tests/integration/run_tests.rs | 6 | ||||
-rw-r--r-- | tests/testdata/jsx/deno-jsx-precompile-skip.jsonc | 7 | ||||
-rw-r--r-- | tests/testdata/run/jsx_precompile/skip.out | 3 | ||||
-rw-r--r-- | tests/testdata/run/jsx_precompile/skip.tsx | 9 | ||||
-rwxr-xr-x | tools/lint.js | 2 |
8 files changed, 38 insertions, 2 deletions
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; } diff --git a/tests/integration/run_tests.rs b/tests/integration/run_tests.rs index dfbebeaf1..c298e4f5b 100644 --- a/tests/integration/run_tests.rs +++ b/tests/integration/run_tests.rs @@ -2098,6 +2098,12 @@ itest!(jsx_import_source_precompile_import_map { http_server: true, }); +itest!(jsx_import_source_precompile_import_map_skip_element { + args: "run --reload --check --import-map jsx/import-map.json --no-lock --config jsx/deno-jsx-precompile-skip.jsonc run/jsx_precompile/skip.tsx", + output: "run/jsx_precompile/skip.out", + http_server: true, +}); + itest!(jsx_import_source_import_map { args: "run --reload --import-map jsx/import-map.json --no-lock --config jsx/deno-jsx-import-map.jsonc run/jsx_import_source_no_pragma.tsx", output: "run/jsx_import_source_import_map.out", diff --git a/tests/testdata/jsx/deno-jsx-precompile-skip.jsonc b/tests/testdata/jsx/deno-jsx-precompile-skip.jsonc new file mode 100644 index 000000000..3c9e4fa1f --- /dev/null +++ b/tests/testdata/jsx/deno-jsx-precompile-skip.jsonc @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "jsx": "precompile", + "jsxImportSource": "jsx-precompile", + "jsxPrecompileSkipElements": ["a", "img"] + } +} diff --git a/tests/testdata/run/jsx_precompile/skip.out b/tests/testdata/run/jsx_precompile/skip.out new file mode 100644 index 000000000..a32b616f0 --- /dev/null +++ b/tests/testdata/run/jsx_precompile/skip.out @@ -0,0 +1,3 @@ +Download http://localhost:4545/jsx/jsx-precompile/index.ts +Check file:///[WILDCARD]/run/jsx_precompile/skip.tsx +imported http://localhost:4545/jsx/jsx-precompile/index.ts diff --git a/tests/testdata/run/jsx_precompile/skip.tsx b/tests/testdata/run/jsx_precompile/skip.tsx new file mode 100644 index 000000000..49bc4e2b7 --- /dev/null +++ b/tests/testdata/run/jsx_precompile/skip.tsx @@ -0,0 +1,9 @@ +export function A() { + return ( + <div> + <a href="#">foo</a> + <p>hello</p> + <img src="#" alt="" /> + </div> + ); +} diff --git a/tools/lint.js b/tools/lint.js index 3361ef6b8..121812f4a 100755 --- a/tools/lint.js +++ b/tools/lint.js @@ -213,7 +213,7 @@ async function ensureNoNewITests() { "pm_tests.rs": 0, "publish_tests.rs": 28, "repl_tests.rs": 0, - "run_tests.rs": 381, + "run_tests.rs": 382, "shared_library_tests.rs": 0, "task_tests.rs": 30, "test_tests.rs": 80, |