Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

96
Visualizações
¿Hay alguna manera de ejecutar de manera confiable una transformación de Babel contra JSX transpilado?

Digamos que tenemos el siguiente componente JSX:

 export function Footer() { return ( <footer class="foo bar baz"> <span>foo bar baz</span> </footer> ); }

Usando Babel, por supuesto, es muy fácil detectar y ejecutar una transformación contra el contenido de la class :

 function plugin({ types: t }) { return { name: 'my-plugin', visitor: { JSXAttribute(path) { if (/class(?:Name)?/.test(path.node.name.name)) { ... } } } } }

Sin embargo, esto presenta un pequeño problema con ciertas herramientas de compilación que no le permiten (fácilmente) interponerse entre la transpilación y la transformación de JSX. Lo que me preguntaba era si había una manera de ejecutar una transformación contra JSX transpilado de una manera que no sea (razonablemente) probable que cause coincidencias falsas. Por ejemplo, la función anterior podría traducirse en lo siguiente:

 import { jsx as _jsx } from "preact/jsx-runtime"; export function Footer() { return _jsx("footer", { class: "foo bar baz", children: _jsx("span", { children: "foo bar baz" }) }); }

Una variación ingenua del complemento original podría verse así:

 function plugin({ types: t }) { return { name: 'my-plugin', visitor: { JSXAttribute(path) { if (/class(?:Name)?/.test(path.node.name.name)) { ... } }, ObjectProperty(path) { if (/class(?:Name)?/.test(path.node.key.name)) { ... } } } } }

Si bien esto "funciona" para la situación, también transformaría algo como notJSXTransform('foo', { class: 'bar' }); , lo que sería indeseable. Tampoco se puede buscar necesariamente un Identifier determinado en una CallExpression de llamada, ya que no hay garantías del nombre de la función JSX importada.

No pude encontrar ninguna especificación sobre cuál podría ser una forma segura de abordar esto, si es que existe alguna forma. Creo que sería interesante y beneficioso poder manejar mejor estas situaciones (donde un usuario no tiene el control total sobre las transformaciones ejecutadas y cuándo), pero no sé si perder el JSX AST es demasiado grande. golpe a posiblemente superar.

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda