summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
authorMarvin Hagemeister <marvin@deno.com>2024-04-22 17:07:36 +0200
committerGitHub <noreply@github.com>2024-04-22 17:07:36 +0200
commit9686a8803e311d532c37fe919e0684feca91a04f (patch)
treed892d1b76fb6c53fd0882869126cb0fc8a620392 /cli
parentaac7a8cb7cc675e3cb2ca1ddb39629a8fa59113b (diff)
feat: add jsx precompile skip element option (#23457)
<!-- Before submitting a PR, please read https://docs.deno.com/runtime/manual/references/contributing 1. Give the PR a descriptive title. Examples of good title: - fix(std/http): Fix race condition in server - docs(console): Update docstrings - feat(doc): Handle nested reexports Examples of bad title: - fix #7123 - update docs - fix bugs 2. Ensure there is a related issue and it is referenced in the PR text. 3. Ensure there are tests that cover the changes. 4. Ensure `cargo test` passes. 5. Ensure `./tools/format.js` passes without changing files. 6. Ensure `./tools/lint.js` passes. 7. Open as a draft PR if your work is still in progress. The CI won't run all steps, but you can add '[ci]' to a commit message to force it to. 8. If you would like to run the benchmarks on the CI, add the 'ci-bench' label. --> 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.
Diffstat (limited to 'cli')
-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
3 files changed, 12 insertions, 1 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;
}