最近、expo react 初めました(いまごろ?)。
quiitaも今まで見るだけの人間でしたが、とりあえず投稿する側になってみた(笑)
今回が最初で最後の投稿になるかもしれませんが、そうでないかもしれません。
現時点でのワタシの最終目標はexpoで開発したmyアプリを android で動かすです。
今はexpo goでandroidで動いただけで喜んでいる小心者です。
pcでは動いてるのにスマホだと動かないことが多いという点に気づき、のっけから結構色々心得が必要だと気づきました。
前置きはさておき、初心者というのは何かプログラムを書き換えたり、ファイルを移動したタイミングでさっきまで正常に動いていたアプリが突然エラーになり頭を悩まされる。何十年もプログラム書いてきた私でさえもです。
自分の書いた tsxファイルを別のディレクトリに移動するだけで何ですぐに動かなくなるんでしょう?
metro.config.jsにこう書かけば除外できる事はわかったもののgoogle先生からもらった設定コードはコピペしても全く機能しない。機能しなくなるどころから 起動すらできなくなる
npx expo start
微妙にexpo内のパッケージ等のバージョンの影響なのだと思うけど今やりたいことは拡張子自体をtsxではなくせば(*.tsx.$みたいに)解消することなので需要はないのかもしれない。
悪戦苦闘したところ、こう書けば特定のディレクトリ配下のtsxを無視できることがわかったのでまた使う機会があるかもしれないのでgoogle先生からいただいたものをいじって動くようにしたサンプルをUPしておいた。それだけのための投稿です。もしかしたら私だけが正常に機能する設定かもしれませんw
全体動作に全く影響のないディレクトリを作って置くことは私的にとても重要なことだったりする。。。
//(metro.config.ts)
const { getDefaultConfig } = require('@expo/metro-config');
const config = getDefaultConfig(__dirname);
const path = require('path');
// 1. 監視から外したいフォルダの絶対パスを取得
// ※ここではapp直下のbakフォルダ以下
const folderToIgnore = path.resolve(__dirname,
'app/bak' //★ここに除外パスを設定 ※projectからの相対パス
);
// 2. watchFolders から除外する
config.watchFolders = config.watchFolders.filter(
(folder) => !folder.startsWith(folderToIgnore)
);
// 3. (オプション) 確実に無視するためにblockListにも追加
// regexを使用して特定のフォルダ以下のファイルをブロック
config.resolver.blockList = [
...config.resolver.blockList,
new RegExp(`^${folderToIgnore.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}.*\\.tsx$`),
];
module.exports = config;