Skip to content

Встроенные плагины

Трансформер Oxc включает встроенную поддержку распространённых плагинов преобразований для удобства разработки и скорости сборки.

Экранирование в шаблонных литералах (Tagged Template Escape)

При включении последовательности </script> внутри тегированных шаблонных литералов экранируются, чтобы браузер не закрыл окружающий тег <script> преждевременно. Так избегают ошибок разбора и потенциальных XSS, когда JS встроен в HTML.

Рекомендация

Включайте эту опцию, если результат может встраиваться в HTML <script>. Иначе литералы с </script> могут ломать страницу. Подробнее: oxc-project/oxc#15306.

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

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

Например, foo`</script>` превращается в вызов хелпера, где </script> заменяется на <\/script>.

Styled Components

Плагин styled-components добавляет поддержку styled-components: SSR, минификация стилей и расширенная отладка.

Базовое использование

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

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

Пример

Вход:

jsx
import styled from "styled-components";

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

Выход (опции по умолчанию):

jsx
import styled from "styled-components";

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

Параметры конфигурации

Основные

ПараметрТипПо умолчаниюОписание
displayNamebooleantrueДополняет CSS-класс именами компонентов для отладки
ssrbooleantrueУникальные ID компонентов, чтобы избежать рассинхрона контрольных сумм при SSR
fileNamebooleantrueПрефикс displayName именем файла

Шаблонные литералы

ПараметрТипПо умолчаниюОписание
transpileTemplateLiteralsbooleantrueШаблонные литералы в более компактный вид для меньшего бандла
minifybooleantrueМинификация CSS: пробелы и комментарии

Дополнительные

ПараметрТипПо умолчаниюОписание
purebooleanfalseКомментарии /*#__PURE__*/ для лучшего tree-shaking
namespacestringundefinedПрефикс пространства имён для ID компонентов
meaninglessFileNamesstring[]["index"]Имена файлов, считающиеся «пустыми» для имён компонентов

Ещё не реализовано

ПараметрТипПо умолчаниюОписание
cssPropbooleantrueПреобразование JSX css prop (планируется)
topLevelImportPathsstring[][]Свои пути импорта (планируется)

Поддерживаемые варианты импорта

javascript
// Default import
import styled from "styled-components";

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

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

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

Возможности

✅ Полностью:

  • Display names для отладки
  • Префикс имени файла в display names
  • Поддержка SSR
  • Транспиляция шаблонных литералов
  • Минификация CSS
  • Префиксы namespace
  • Pure-аннотации для вызовов

⚠️ Частично:

  • Pure-аннотации только для call expressions, не для тегированных шаблонов (ограничения бандлеров)

❌ Не реализовано:

  • Преобразование JSX css prop
  • Свои пути импорта