babelをゼロコンフィグで扱う


nodeのツールでbabelを使いたい場合、もちろんbabelrcを書く必要がありますが、面倒です。
また、presetspluginsの更新に時間を取られたくありません。
ので、自分でライブラリを公開するときはbabel-preset-zeroを用いて痛みを軽減しています。

yarn add --dev babel-cli babel-preset-zero

akameco/babel-preset-zero: babelrc for zero config

Usage

{
  "presets": ["zero"]
}

How

babel-preset-zeroが何をしているのかと言えば、babelrcは普通にjsをかけるのでnpmの依存を解析したり、環境変数を見たりして使うpresetを自動的に判定します。

例えば、基本公開はnode v6以上で公開したいですが、test環境はで不要です。
なのでテストではcurrnetでビルドするようにします。

const envTargets = isTest ? { node: 'current' } : { node: '6' }

また、flow-binがある場合のみbabel-presets-flowが有効になりようにすることも可能です。
依存にreactがあればbabel-presets-reactを有効化等が指定なしで出来ます。

hasAnyDep('flow-bin') && require.resolve('babel-preset-flow'),

メリット

babel-preset-zeroを使う場合は、これだけ管理すればよくなり、管理が楽です。

まとめ

もしbabel-presets-zeroの設定に気に食わないところがあればPR歓迎です。また、自分でpresetsを自分で用意してもよいと思います。

akameco/babel-preset-zero: babelrc for zero config