Yarn Workspaces を後付けする
Yarn Workspaces を後付けする
以下のような状況を想定します。
- 既存のワークスペース (Yarn Workspaces 未適用) が存在する
- 既存のワークスペース配下に追加をしたくない (上位ディレクトリなどに追加は大丈夫)
- 追加するワークスペースの内容を別途追加される兄弟ワークスペースが使用するが
- 兄弟ワークスペースの Node のバージョンが違う・・・
- でも同じコードを使用したりしたい
対応
共有する対象のコードの設置
共有するコードを ./src/
と同列の ./packages/
に設置します。
それぞれ配下には package.json
を設置して name
に node_modules/
に格納される名前を指定します。
Yarn Workspaces の設定
既存のパスを packages
への指定にしつつ、追加のワークスペースを ./src/packages/
に設置します。
{
・・・
"workspaces": {
"packages": [
"./",
"./src/packages/*"
]
},
・・・
}
- 既存のパスを
"./"
にて指定 - 追加するワークスペースを
"./src/packages/*"
に指定
./src/packages/
に指定した内容を用意
./packages/
に用意した内容をシンボリックリンクにより ./src/packages/
として設置します。
cd ./src
ln -s ../packages/ packages
「既存コードに変更を行いたくない」に反するような気がしますが、
まあ適当に空いている構造に設置するということで・・・
yarn install
これによりこれまで通りのパスで yarn install
を行うと、
./src/packages/
に設置した内容が node_modules/
に反映されました。
・・・もっといい方法があるかもですが。
Yarn Workspaces の使用で Firebase に functions がアップロードできない場合
上記までのものを使用して Firebase の functions をアップロードしたところ、
Yarn Workspaces として設定した対象が module not found
として解決できない事象に遭遇しました。
なんとか動かした対応として、
- シンボリックリンクでなくファイルのコピーに変更
-
Yarn Workspaces の指定を解除
-
package.json
を前述までのworkspaces
の記述を削除 -
@test/
(仮) がnode_modules/@test/
に紐づいていたところを、
@test/
をsrc/packages/
に紐づけ直し- webpack.config.js
- tsconfig.json
-
-
@test/
配下でdependencies
の指定があれば使用側のpackage.json
に追加
Author And Source
この問題について(Yarn Workspaces を後付けする), 我々は、より多くの情報をここで見つけました https://qiita.com/ysKuga/items/8d10faca0dfe8abce678著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .