🏞️

monorepo で React Native without framework を使う

2024/07/20に公開

確認したバージョンは 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 チームはすぐ解決するつもりらしいので、これは今限定のワークアラウンドになるだろう。

GitHubで編集を提案

Discussion