Expoでのimport文のaliasはBabelではなくMetroで設定する
Expo等で、BabelとMetroを併用している時に、path aliasを指定する方法が2つある 前者だと動かない(?)
まじで勘弁してくれmrsekut.icon
そもそもpath aliasの指定の方法が、transpilerのBabelとbundlerのMetroの2箇所にあるのが分かりづらすぎる
更に、Metroは内部でBabelを使っているので、Babelの設定を一部上書きする設定があったりする
また、一方で、Metroを使えば、babel.config.jsが不要になるわけでもない
presetsとかpluginとかは普通にbabel.config.jsに書く必要がある
Metroのdocsのこの辺を参考にする
例
code:metro.config.js
const { getDefaultConfig } = require('expo/metro-config');
/** @type {import('expo/metro-config').MetroConfig} */
const config = getDefaultConfig(__dirname);
module.exports = {
...config,
resolver: {
extraNodeModules: {
app: ${__dirname},
},
},
watchFolders: [${__dirname}],
};
node_modules と nodeModulesPaths による標準的な検索の後に参照されるパッケージ名とディレクトリのマッピング。
ディスク上に存在しないモジュールパスを解決する際に、順番に試行するファイル拡張子のリスト。 デフォルトは resolver.sourceExts です。
プロジェクトのソースファイルを格納できる、projectRoot外のディレクトリのリスト。
注: このオプションは、ファイル監視だけに関係するものではありません。 オフラインビルド(CIなど)でも、watchFoldersとprojectRootの組み合わせによって、すべてのファイルがMetroに見えるようになっていなければなりません。