メインコンテンツにスキップ

@babel/core

JavaScript
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を含むオブジェクトでコールバックを呼び出します。

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

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

Babel 6では、このメソッドは同期であり、transformSyncは存在しませんでした。後方互換性のために、コールバックが指定されていない場合、この関数は同期的に動作します。 Babel 7から始めて同期的な動作が必要な場合は、この後方互換性はBabel 8で削除されるため、transformSyncを使用してください。

transformSync

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

渡されたcodeを変換します。生成されたコード、ソースマップ、およびASTを含むオブジェクトを返します。

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

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

transformAsync

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

渡されたcodeを変換します。生成されたコード、ソースマップ、およびASTを含むオブジェクトのプロミスを返します。

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

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

transformFile

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

ファイルの内容全体を非同期的に変換します。

JavaScript
babel.transformFile(filename, options, callback);

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

transformFileSync

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

babel.transformFileの同期バージョン。 filenameの変換された内容を返します。

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

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

transformFileAsync

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

babel.transformFileのプロミスバージョン。 filenameの変換された内容のプロミスを返します。

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

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

transformFromAst

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

ASTが与えられた場合、それを変換します。

JavaScript
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から始めて同期的な動作が必要な場合は、この後方互換性はBabel 8で削除されるため、transformFromAstSyncを使用してください。

transformFromAstSync

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

ASTが与えられた場合、それを変換します。

JavaScript
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が与えられた場合、それを変換します。

JavaScript
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の安定版から始めて同期的な動作が必要な場合は、この後方互換性はBabel 8で削除されるため、`parseSync`を使用してください。

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への後続の呼び出しでは設定ファイルの2回目の読み込みは行われません。

Pluginインスタンスは直接操作することを意図していませんが、呼び出し側は多くの場合、このoptsをJSONにシリアライズして、Babelが受信したオプションを表すキャッシュキーとして使用します。 これのキャッシュは、適切に無効化されることが100%保証されているわけではありませんが、現時点では最善の方法です。

loadPartialConfig

babel.loadPartialConfig(options?: Object): PartialConfig

システムがユーザーの設定を簡単に操作および検証できるように、この関数はプラグインとプリセットを解決し、それ以上処理を進めません。呼び出し側は設定の.optionsを取得し、必要に応じて操作し、Babelに 다시 渡すことが想定されています。

この関数は、標準のオプションに加えて、オプションオブジェクトの一部として1つの追加オプションを受け入れます:`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への後続の呼び出しでは設定ファイルの2回目の読み込みは行われません。
  • hasFilesystemConfig(): boolean - 解決された設定がファイルシステムから設定を読み込んだかどうかを確認します。
  • `fileHandling` - これは、呼び出し側がこのファイルで何をすべきかを示すために、`"transpile"`、`"ignored"`、または`"unsupported"`に設定されます。
  • `files` - 結果の設定を構築するために読み取られたファイルパスの`Set`。プロジェクト全体の設定ファイル、ローカル設定ファイル、拡張設定ファイル、無視ファイルなどが含まれます。ウォッチモードまたはキャッシュの無効化を実装するのに役立ちます。

ConfigItemインスタンスは、値をイントロスペクトするためのプロパティを公開しますが、各アイテムは不変として扱う必要があります。変更が必要な場合は、リストからアイテムを削除し、通常のBabel設定値、または`babel.createConfigItem`によって作成された置換アイテムに置き換える必要があります。 `ConfigItem`フィールドの詳細については、その関数を参照してください。

createConfigItem

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

ビルドツールが設定アイテムを事前に作成およびキャッシュできるようにします。この関数が特定のプラグインに対して複数回呼び出された場合、Babelはプラグインの関数を複数回呼び出します。挿入するプラグインとプリセットの明確なセットがある場合は、設定アイテムを事前に構築することをお勧めします。

ConfigItem タイプ

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 を使用して他の拡張子をサポートする方法を提供しています。

オプション

オプションの完全なリストはこちらをご覧ください。