BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ES.Next提案とTypeScriptをサポートを改善するBabel 7リリース

ES.Next提案とTypeScriptをサポートを改善するBabel 7リリース

原文(投稿日:2018/10/29)へのリンク

TypeScriptトランスパイルやES.Next提案を管理するためのよりよい方法のサポートなど、多くの重要な変更と改善が含まれたBabel 7がリリースされた。

BabelとTypeScriptのチームが協力して@babel/preset-typescriptでBabelの解析と型シンタックスを変換できるようになった。BabelにはすでにFlowのサポートが含まれており、BabelチームのゴールはJavaScriptユーザーが段階的に型を利用できるようにするツールをサポートすることである。TypeScriptプログラムマネージャーであるDaniel Rosenwasser氏はBabel-TypeScriptコラボレーションの同期と利点について説明した:

1年以上前、ユーザーが実行中のものにTypeScriptを導入することが最大の課題であり、BabelユーザーがTypeScriptの設定を試みることが非常に難しいことが共通のテーマだとわかりました。理由は様々ですが、多くの開発者にとって、すでに動作しているビルドを書き換えることは避けたい作業です。

TypeScriptは、まだTypeScriptをビルドするのに適した環境であり、Babelはコンパイル/トランスパイルを処理できるが、Babelは組み込みの型チェックがない。この統合によってBabelユーザーはTypeScriptが持つtypoとエラーチェックを手にすることになる。

TC39ワーキンググループは、JavaScript言語を年に1回更新し、ステージ4で言語に含められるステージプロセスで検討される多くの提案を作成している。Babel 7はデフォルトの振る舞いを変更して、バージョン4以前の機能を明示的にオプトインするようにしており、不注意でユーザーが最終的に機能しないものに頼らないようにしている。

BabelによってサポートされているTC39提案の完全なリストはbabel/proposalsにある。

babel.config.jsの導入を含むBabelによる構成の大幅な改善は、バージョン7で実現される。この新しい構成ファイルはオプションであり、.babelrcを完全に置き換えるものではないが、開発環境と実稼働環境などのように異なるコンパイルオプションを指定したい場合など、いくつかの場面で便利である。

BabelのメンテナーであるHenry Zhu氏によると

*.js構成ファイルはJavaScriptエコシステムの中ではかなり一般的です。ESLintとWebpackはどちらも.eslintrc.jsとwebpack.config.js構成ファイルを使用できます。

1つ注意が必要な点として、babel.config.jsが.babelrcとは異なる構成だということである。新しい構成ファイルは常にそのファイルから構成を解決するのに対して、.babelrcは設定を見つけるまで各ファイルを深堀する。この追加により、オーバーライドによる選択的な構成を利用できる。

ES2015+パッケージを効率的に発行し、これらのパッケージを使用してコンパイルするのには課題がある。Babel構成は、ディレクトリごとに新しい.babelrcファイルを作成する必要がなくなり、テスト、クライアントサイドソースコード、サーバーサイドコードへの異なるコンパイル構成が必要なアプリケーションの構成が可能になった。

Babel 7は、ネイティブで機能が提供されていない環境でのPromisesとSymbolsのような自動ポリフィルも実験的にサポートしている。Babel 7は、ポリフィル全体をインポートするのではなく、コードベースで使われているポリフィルのみをインポートすることを目標にしている。

ターゲットモジュールの改善、Babel transformsの呼び出し元メタデータ、JSXサポート、babel-upgradeツールなどがBabel 7で追加された。

Babel 7にアップグレードするときに注意すべきいくつかの大きな変更点がある:

  • バージョン6以前のNode.jsサポートを削除
  • 公式のBabelパッケージと混同しないように@babel名前空間をスコープ付きパッケージに切り替え
  • 年次のプリセットを削除して@babel/preset-envに置き換え
  • 個々のTC39提案をオプトインしてステージ提案のリセットを置き換え
  • TC39提案プラグインを-transformから-proposalに変更
  • @babel/coreにユーザーに対面するパッケージ(例えばbabel-loader, @babel/cli, など)のpeerDependencyを導入

Babelバージョン7を超えた将来を見据えて、Zhu氏は次のように述べている:

Babelは本質的にJavaScriptにコンパイルされたものと結びついています。提案/作業に新しい追加がある限り、やるべき作業があります。「安定」する前に実装と維持するために時間/労力が含まれています。私たちはアップグレードパス、新機能の教育、標準/言語デザインの指導、使いやすさ、他のプロジェクトとの統合など、全てのプロセスを気にしています。

例えばBabelチームはバージョン7.1に含まれている改訂されたDecorators提案をサポートする作業をしている。改訂された提案は、以前の提案とは大きくことなり、さらに多くの機能が提案されている。TypeScriptロードマップも改訂されたES Decorator提案に含まれている。

その他のBabelの開発中機能として、ミニフィケーション、プラグイン順序、バリデーション/エラーの改善、Babel非同期利用などが含まれる。Babelロードマップで詳細を見ることができる。

BabelはMITオープンソースライセンスで提供されている。コントリビューションはBabel GitHub organizationから歓迎されており、Babelのコントリビューションガイドライン行動規範に従う必要がある。Open Collectiveを通じてプロジェクトをサポートする寄付もできる。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT