Spec-Zone.ru › Babel 7

@babel/core

var babel = require("@babel/core");
import { transform } from "@babel/core";
import * as babel from "@babel/core";

Все преобразования будут использовать ваши локальные конфигурационные файлы.

transform​

babel.transform(code: string, options?: Object, callback: Function)

Преобразует переданный code. Вызывает обратный вызов с объектом, содержащим сгенерированный код, карту исходного кода и AST.

babel.transform(code, options, function(err, result) {
  result; // => { code, map, ast }
});

Пример

babel.transform("code();", options, function(err, result) {
  result.code;
  result.map;
  result.ast;
});

Примечание по совместимости:

В Babel 6 этот метод был синхронным и transformSync не существовало. Для обеспечения обратной совместимости эта функция будет работать синхронно, если обратный вызов не указан. Если вы начинаете с Babel 7 и вам нужна синхронная работа, используйте transformSync, так как эта обратная совместимость будет удалена в Babel 8.

transformSync​

babel.transformSync(code: string, options?: Object)

Преобразует переданный code. Возвращает объект со сгенерированным кодом, картой исходного кода и AST.

babel.transformSync(code, options); // => { code, map, ast }

Пример

var result = babel.transformSync("code();", options);
result.code;
result.map;
result.ast;

transformAsync​

babel.transformAsync(code: string, options?: Object)

Преобразует переданный code. Возвращает промис для объекта со сгенерированным кодом, картой исходного кода и AST.

babel.transformAsync(code, options); // => Promise<{ code, map, ast }>

Пример

babel.transformAsync("code();", options).then(result => {
  result.code;
  result.map;
  result.ast;
});

transformFile​

babel.transformFile(filename: string, options?: Object, callback: Function)

Асинхронно преобразует всё содержимое файла.

babel.transformFile(filename, options, callback);

Пример

babel.transformFile("filename.js", options, function(err, result) {
  result; // => { code, map, ast }
});

transformFileSync​

babel.transformFileSync(filename: string, options?: Object)

Синхронная версия babel.transformFile. Возвращает преобразованное содержимое filename.

babel.transformFileSync(filename, options); // => { code, map, ast }

Пример

babel.transformFileSync("filename.js", options).code;

transformFileAsync​

babel.transformFileAsync(filename: string, options?: Object)

Промис-версия babel.transformFile. Возвращает промис для преобразованного содержимого filename.

babel.transformFileAsync(filename, options); // => Promise<{ code, map, ast }>

Пример

babel.transformFileAsync("filename.js", options).then(result => {
  result.code;
});

transformFromAst​

babel.transformFromAst(ast: Object, code?: string, options?: Object, callback: Function): FileNode | null

Преобразовать AST.

const sourceCode = "if (true) return;";
const parsedAst = babel.parseSync(sourceCode, {
  parserOpts: { allowReturnOutsideFunction: true },
});
babel.transformFromAst(parsedAst, sourceCode, options, function(err, result) {
  const { code, map, ast } = result;
});

Примечание по совместимости:

В Babel 6 этот метод был синхронным и transformFromAstSync не существовало. Для обеспечения обратной совместимости эта функция будет работать синхронно, если обратный вызов не указан. Если вы начинаете с Babel 7 и вам нужна синхронная работа, используйте transformFromAstSync так как эта обратная совместимость будет удалена в Babel 8.

transformFromAstSync​

babel.transformFromAstSync(ast: Object, code?: string, options?: Object)

Преобразовать AST.

const sourceCode = "if (true) return;";
const parsedAst = babel.parseSync(sourceCode, {
  parserOpts: { allowReturnOutsideFunction: true },
});
const { code, map, ast } = babel.transformFromAstSync(
  parsedAst,
  sourceCode,
  options
);

transformFromAstAsync​

babel.transformFromAstAsync(ast: Object, code?: string, options?: Object)

Преобразовать AST.

const sourceCode = "if (true) return;";
babel
  .parseAsync(sourceCode, { parserOpts: { allowReturnOutsideFunction: true } })
  .then(parsedAst => {
    return babel.transformFromAstAsync(parsedAst, sourceCode, options);
  })
  .then(({ code, map, ast }) => {
    // ...
  });

parse​

babel.parse(code: string, options?: Object, callback: Function)

Проанализировать код с помощью стандартного поведения Babel. Загружаются указанные пресеты и плагины, так что необязательные плагины синтаксиса автоматически включены.

Примечание по совместимости:

В ранних бета-версиях Babel 7 этот метод был синхронным и parseSync не существовало. Для обеспечения обратной совместимости эта функция будет работать синхронно, если обратный вызов не указан. Если вы начинаете с стабильной версии Babel 7 и вам нужна синхронная работа, используйте parseSync так как эта обратная совместимость будет удалена в Babel 8.

parseSync​

babel.parseSync(code: string, options?: Object)

Возвращает AST.

Проанализировать код с помощью стандартного поведения Babel. Загружаются указанные пресеты и плагины, так что необязательные плагины синтаксиса автоматически включены.

parseAsync​

babel.parseAsync(code: string, options?: Object)

Возвращает промис для AST.

Проанализировать код с помощью стандартного поведения Babel. Загружаются указанные пресеты и плагины, так что необязательные плагины синтаксиса автоматически включены.

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

Многие системы, использующие Babel, автоматически вводят плагины и пресеты или переопределяют опции. Для этого Babel предоставляет несколько функций, которые помогают загрузить часть конфигурации без преобразования.

loadOptions​

babel.loadOptions(options?: Object)

Полностью разрешает опции Babel, результатом является объект опций, где:

  • opts.plugins — это полный список экземпляров Plugin.
  • opts.presets пуст, а все пресеты сглажены в opts.
  • Его можно безопасно передать обратно в Babel. Поля, такие как "babelrc", установлены в false таким образом, что последующие вызовы Babel не будут повторно загружать конфигурационные файлы.

Экземпляры Plugin не предназначены для прямого изменения, но часто вызывающие стороны сериализуют эти opts в JSON для использования в качестве ключа кэша, представляющего опции, полученные Babel. Кэширование на этом не 100% гарантированно правильно проигнорирует, но это лучшее, что у нас есть на данный момент.

loadPartialConfig​

babel.loadPartialConfig(options?: Object): PartialConfig

Чтобы системам было легко изменять и проверять конфигурацию пользователя, эта функция разрешает плагины и пресеты, не выполняя дальнейших действий. Ожидается, что вызывающие стороны возьмут .options, манипулируют им по своему усмотрению и передадут его обратно в Babel.

Эта функция принимает дополнительный параметр в качестве части объекта options помимо стандартных options: showIgnoredFiles. Если установлено в true, loadPartialConfig всегда возвращает результат при игнорировании файла, а не null. Это полезно для возможности доступа к списку файлов, повлиявших на этот результат, например, в режиме наблюдения. Вызывающая сторона может определить, был ли файл проигнорирован, основываясь на возвращаемом свойстве fileHandling.

  • babelrc: string | void — путь к файлу относительной конфигурации файла, если таковой был.
  • babelignore: string | void — путь к файлу .babelignore , если таковой был.
  • config: string | void — путь к файлу конфигурации всего проекта, если таковой был.
  • options: ValidatedOptions — частично разрешённые опции, которые можно изменить и передать обратно в Babel.
    • plugins: Array<ConfigItem> — см. ниже.
    • presets: Array<ConfigItem> — см. ниже.
    • Его можно безопасно передать обратно в Babel. Опции, такие как "babelrc", установлены в false, чтобы последующие вызовы Babel не предпринимали попытку повторной загрузки конфигурационных файлов.
  • hasFilesystemConfig(): boolean — проверка, загрузила ли разрешённая конфигурация какие-либо параметры из файловой системы.
  • fileHandling — установлено в "transpile", "ignored", или "unsupported", чтобы указать вызывающей стороне, что делать с этим файлом.
  • files — массив путей к файлам, которые были прочитаны для построения результирующей конфигурации, включая файлы конфигурации всего проекта, локальные файлы конфигурации, расширенные файлы конфигурации, файлы игнорирования и т. д. Полезно для реализации режима наблюдения или инвалидации кэша.

ConfigItem экземпляры предоставляют свойства для проверки значений, но каждый элемент следует рассматривать как неизменяемый. Если изменения необходимы, элемент должен быть удалён из списка и заменён либо обычным значением конфигурации Babel, либо элементом-заменой, созданным babel.createConfigItem . Смотрите эту функцию для получения информации о полях ConfigItem.

createConfigItem​

babel.createConfigItem(value: string | {} | Function | [string | {} | Function, {} | void], { dirname?: string, type?: "preset" | "plugin" }): ConfigItem

Позволяет инструментам сборки создавать и кешировать элементы конфигурации заранее. Если эта функция вызывается несколько раз для одного плагина, Babel вызовет функцию плагина несколько раз. Если у вас есть чёткий набор ожидаемых плагинов и пресетов для вставки, рекомендуется предварительное построение элементов конфигурации.

ConfigItem type​

Каждый ConfigItem предоставляет всю информацию, известную Babel. Поля:

  • value: {} | Function - Результирующее значение плагина.
  • options: {} | void - Объект опций, переданный плагину.
  • dirname: string - Путь, относительно которого заданы опции.
  • name: string | void - Имя, заданное пользователем для экземпляра плагина, например, plugins: [ ['env', {}, 'my-env'] ]
  • file: Object | void - Информация о файле плагина, если Babel знает её.
    • request: string - Файл, запрошенный пользователем, например, "@babel/env"
    • resolved: string - Полный путь к результирующему файлу, например, "/tmp/node_modules/@babel/preset-env/lib/index.js"

DEFAULT_EXTENSIONS​

babel.DEFAULT_EXTENSIONS: только для чтения string[];

Список стандартных расширений, поддерживаемых Babel (".js", ".jsx", ".es6", ".es", ".mjs", "cjs"). Этот список используется @babel/register и @babel/cli для определения файлов, требующих транспиляции. Расширить этот список нельзя, однако @babel/cli предоставляет способы поддержки других расширений с помощью --extensions.

Опции​

См. полный список опций здесь.

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

Spec-Zone.ru

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