🏞️
monorepo で React Native without framework を使う
確認したバージョンは v0.74 のみ。
フレームワークなしの React Native を monorepo のパッケージのひとつとして initialize した場合、そのままでは Metro で次のようなエラーが出る。
Unable to resolve module @babel/runtime/helpers/interopRequireDefault
metro.config.js で watchFolders
として monorepo ルートを指定すると解決する。
const { getDefaultConfig, mergeConfig } = require("@react-native/metro-config");
const path = require("path");
const monorepoRoot = path.resolve(__dirname, "../../");
/**
* Metro configuration
* https://reactnative.dev/docs/metro
*
* @type {import('metro-config').MetroConfig}
*/
const config = {
watchFolders: [monorepoRoot],
};
module.exports = mergeConfig(getDefaultConfig(__dirname), config);
Metro が symlink を解決できるようになった影響で、プロジェクト外のファイルを参照するために必要となった設定だ。
React Native チームはすぐ解決するつもりらしいので、これは今限定のワークアラウンドになるだろう。
Discussion