Edited at

Parcel, Node.jsの両方で babel を使うときにbabelrcを分けたい


2019/10/25 追記

そもそもこの記事書いてた時は babelrc について詳しく知らなかったのですが、babelrcはディレクトリよりも下に適用されるらしいので単純にクライアントのディレクトリとサーバのディレクトリにそれぞれ .babelrc.js 設置すればいいだけでした、ちゃんちゃん



クライアント(parcel)に使いたいbabelrc

module.exports = {

presets: [
[
'@babel/preset-env',
{
targets: ['> 0.5%', 'last 2 versions', 'Firefox ESR', 'not dead']
}
],
'@babel/preset-react'
]
};


nodejsに使いたいbabelrc

module.exports = {

presets: [
[
'@babel/preset-env',
{
targets: {
node: 'current'
}
}
]
]
};

といった風に分けたい時のメモです。


Parcel側

Parcel は .babelrc または .babelrc.js しか扱ってくれないらしい1 ので、

クライアントに適用させたいconfigは上記に普通に入れてあげます。


Node.js側

こちらが結構てこずったのですが、CLIでビルドするときに、 デフォルトのbabelrcを除外しつつ、 適当な名前に変えたconfig (例えば、 .babelrc.server.js) を適用してあげるようにします。

babel server -d build --no-babelrc --config-file ./.babelrc.server.js

--config-file でデフォルトのbabelrcでないconfigを読み込めます。

最初はそれだけ指定していたのですが、実は新しいconfigを読み込むだけだとデフォルトのbabelrcもそのまま読み込んでしまうみたいでうまく反映されなかったので、 --no-babelrc を指定してあげる必要があります。


さいごに

あまり情報が出てこなかったけどそもそもこういった使い方は間違っている...?