@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/