summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/args/mod.rs2
-rw-r--r--cli/schemas/config-file.v1.json8
-rw-r--r--cli/tsc/99_main_compiler.js3
-rw-r--r--tests/integration/run_tests.rs6
-rw-r--r--tests/testdata/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/testdata/run/jsx_precompile/skip.out3
-rw-r--r--tests/testdata/run/jsx_precompile/skip.tsx9
-rwxr-xr-xtools/lint.js2
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,