Yarn 2 を使用node_modules
すると、フェッチされず、それぞれのディレクトリに配置されます(ディレクトリでfunctions
呼び出す場合と同様)。したがって、フォルダーの呼び出しが欠落している場合、firebase はこれについて不平を言い、次のエラー (または同様のエラー) で展開プロセスを中止します。npm i
functions
firebase deploy --project default --only function
node_modules
Error parsing triggers: Cannot find module [...]
Try running "npm install" in your functions directory before deploying.
現在、この問題を追跡している 2 つの github の問題があります。
上記の 2 つの問題では、いくつかの巧妙な回避策が firebase ユーザーによって提示されています。たとえば、webpack を使用してリリース内のすべてのローカル パッケージを含むビルドを作成したり、rsync やリリース前にパッケージを再配線するその他のツールを使用したりします。
別の解決策は、可能であれば、プロジェクト パッケージを巻き上げないことです。これを行うには、次の 2 つのディレクティブをファイルに追加し.yarnrc.yml
ます。
# yarnrc.yml
# disables yarn's plugnplay style and uses node_modules instead
nodeLinker: node-modules
# makes sure the node_modules are not hoisted to the (monorepo) project root
nmHoistingLimits: "dependencies"
上記の 2 つのディレクティブは、次のようにyarnrc 構成ドキュメントで説明されています。
nmHoistingLimitsパッケージを持ち上げることができる最高点を定義します。ワークスペース (パッケージに依存するワークスペースを超えてパッケージをホイストしない)、依存関係 (パッケージは各ワークスペースの直接の依存関係を超えてホイストされない)、またはなし (デフォルトでは、パッケージは可能な限りホイストされます) のいずれかです。この設定は、installConfig.hoistingLimits フィールドを介してワークスペースごとにオーバーライドできます。
nodeLinker Node パッケージのインストールに使用するリンカーを定義します (node-modules プラグインを有効にするのに役立ちます)。pnp、node-modules のいずれかです。