Skip to content

Plugins embutidos

O transformador Oxc inclui suporte embutido a plugins comuns para melhorar DX e desempenho de build.

Escape em template literal marcado

Quando ligado, sequências </script> dentro de template literals marcados são escapadas para o navegador não fechar cedo uma tag <script> ao redor. Evita erro de parsing e riscos de XSS quando o JS sai embutido em HTML.

Recomendação

Ligue quando a saída puder ir direto em <script> no HTML. Sem isso, foo`</script>` pode quebrar páginas com script embutido. Detalhes: oxc-project/oxc#15306.

javascript
import { transform } from "oxc-transform";

const result = await transform("lib.js", sourceCode, {
  plugins: {
    taggedTemplateEscape: true,
  },
});

Por exemplo, foo`</script>` vira uma chamada auxiliar onde </script> vira <\/script>.

Styled Components

O plugin adiciona suporte completo ao styled-components: SSR, minificação de estilos e melhor experiência de depuração.

Uso básico

javascript
import { transform } from "oxc-transform";

const result = await transform("Component.jsx", sourceCode, {
  plugins: {
    styledComponents: {
      displayName: true,
      ssr: true,
      fileName: true,
      minify: true,
    },
  },
});

Exemplo

Entrada:

jsx
import styled from "styled-components";

const Button = styled.div`
  color: blue;
  padding: 10px;
`;

Saída (opções padrão):

jsx
import styled from "styled-components";

const Button = styled.div.withConfig({
  displayName: "Button",
  componentId: "sc-1234567-0",
})(["color:blue;padding:10px;"]);

Opções de configuração

Principais

OpçãoTipoPadrãoDescrição
displayNamebooleantrueEnriquece o nome de classe CSS com o nome do componente para debug
ssrbooleantrueIDs únicos para evitar divergência de checksum no SSR
fileNamebooleantruePrefixa displayName com o nome do arquivo

Template literals

OpçãoTipoPadrãoDescrição
transpileTemplateLiteralsbooleantrueConverte templates para representação menor
minifybooleantrueRemove espaços em branco e comentários do CSS

Avançadas

OpçãoTipoPadrãoDescrição
purebooleanfalseInsere /*#__PURE__*/ para tree-shaking
namespacestringundefinedPrefixo de namespace nos IDs dos componentes
meaninglessFileNamesstring[]["index"]Nomes de arquivo tratados como genéricos no naming

Ainda não implementado

OpçãoTipoPadrãoDescrição
cssPropbooleantrueTransformação da prop JSX css (planejado)
topLevelImportPathsstring[][]Caminhos de import personalizados (planejado)

Padrões de import suportados

javascript
// Import default
import styled from "styled-components";

// Namespace
import * as styled from "styled-components";

// Nomeados
import { createGlobalStyle, css, keyframes } from "styled-components";

// Native e primitives
import styled from "styled-components/native";
import styled from "styled-components/primitives";

Estado do suporte

Totalmente suportado:

  • Nomes para debug
  • Prefixo com nome de arquivo no display name
  • SSR
  • Transpilação de template literals
  • Minificação de CSS
  • Prefixos de namespace
  • Anotações puras em expressões de chamada

Parcial:

  • Anotações puras (apenas chamadas; não templates marcados por limitações de bundler)

Não implementado:

  • Prop JSX css
  • Import paths customizados