Spec-Zone.ru › Babel 7

@babel/generator

Преобразует AST в код.

Установка​

  • npm
  • Yarn
  • pnpm
npm install --save-dev @babel/generator
yarn add --dev @babel/generator
pnpm add --save-dev @babel/generator

Использование​

import { parse } from "@babel/parser";
import generate from "@babel/generator";

const code = "class Example {}";
const ast = parse(code);

const output = generate(
  ast,
  {
    /* options */
  },
  code
);

Примечание: Символы, такие как пробелы или символы новой строки, не сохраняются в AST. Когда Babel generator печатает код из AST, формат вывода не гарантируется.

Параметры​

История
Версия Изменения
v7.21.0 Добавлены inputSourceMap

Параметры для форматирования вывода:

имя тип по умолчанию описание
auxiliaryCommentAfter строка Дополнительная строка для добавления в виде блочного комментария в конце выходного файла
auxiliaryCommentBefore строка Дополнительная строка для добавления в виде блочного комментария в начале выходного файла
comments логическое значение true Включать ли комментарии в вывод
compact логическое значение или 'auto' opts.minified Установить в true для предотвращения добавления пробелов для форматирования
concise логическое значение false Установить в true для уменьшения пробелов (но не настолько, как opts.compact)
decoratorsBeforeExport логическое значение Установить в true для вывода декораторов перед export в выводе.
filename строка Используется в сообщениях об ошибках
jsescOption объект Использовать jsesc для обработки литералов. jsesc применяется к числам только если jsescOption.numbers (добавлено в v7.9.0) присутствует. Вы можете настроить jsesc, передав параметры в него.
jsonCompatibleStrings логическое значение false Установить в true для выполнения jsesc с "json": true для вывода "\u00A9" вместо "©";
minified логическое значение false Нужно ли сжимать вывод
retainFunctionParens логическое значение false Сохранить скобки вокруг выражений функций (может быть использовано для изменения поведения парсинга движка)
retainLines логическое значение false Попытка использовать те же номера строк в выводимом коде, что и в исходном коде (помогает сохранить отладочные трассировки)
shouldPrintComment функция opts.comments Функция, которая принимает комментарий (как строку) и возвращает true если комментарий должен быть включен в вывод. По умолчанию комментарии включаются, если opts.comments равно true или если opts.minified равно false и комментарий содержит @preserve или @license
topicToken '%' или '#' Токен, используемый с ссылками на тему Hack-pipe. Это необходимо, когда есть узлы TopicReference.

Параметры для карт источников:

имя тип по умолчанию описание
sourceMaps логическое значение false Включить генерацию карт источников
inputSourceMap строка или объект Входная карта источников
sourceRoot строка Корень для всех относительных URL-адресов в карте источников
sourceFileName строка Имя файла исходного кода (т.е. код в code аргументе). Это будет использоваться только если code является строкой.

AST из нескольких источников​

В большинстве случаев Babel выполняет преобразование входного файла в выходной файл 1:1. Однако вы можете иметь дело с AST, построенным из нескольких источников — файлов JS, шаблонов и т. д. Если это так, и вы хотите, чтобы карты источников отражали правильные источники, вам необходимо передать объект в generate в качестве параметра code. Ключи должны быть именами файлов источников, а значения — содержимым исходных файлов.

Вот пример того, как это может выглядеть:

import { parse } from "@babel/parser";
import generate from "@babel/generator";

const a = "var a = 1;";
const b = "var b = 2;";
const astA = parse(a, { sourceFilename: "a.js" });
const astB = parse(b, { sourceFilename: "b.js" });
const ast = {
  type: "Program",
  body: [].concat(astA.program.body, astB.program.body),
};

const { code, map } = generate(
  ast,
  { sourceMaps: true },
  {
    "a.js": a,
    "b.js": b,
  }
);

// Sourcemap will point to both a.js and b.js where appropriate.

© 2014-present Sebastian McKenzie
Licensed under the MIT License.
https://babeljs.io/docs/babel-generator/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API