diff options
author | Marvin Hagemeister <marvin@deno.com> | 2024-04-22 17:07:36 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-22 17:07:36 +0200 |
commit | 9686a8803e311d532c37fe919e0684feca91a04f (patch) | |
tree | d892d1b76fb6c53fd0882869126cb0fc8a620392 /cli | |
parent | aac7a8cb7cc675e3cb2ca1ddb39629a8fa59113b (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.rs | 2 | ||||
-rw-r--r-- | cli/schemas/config-file.v1.json | 8 | ||||
-rw-r--r-- | cli/tsc/99_main_compiler.js | 3 |
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; } |