モノレポってとりあえず複数のパッケージをひとつのリポジトリで管理すればいいと思っていた
yarn workspace が便利なので移行した
Before
直下に packages ディレクトリがあり、packages 下に各パッケージを置いているだけの状態
各パッケージで yarn install しているため、yarn.lock がそれぞれに存在する
- /
- /packages
- /package-aaa
- package.json
- yarn.lock
- ...
- /package-bbb
- package.json
- yarn.lock
- ...
- /package-ccc
- package.json
- yarn.lock
- ...
- ...
ルートに package.json 作成
/package.json
{
"name": "hoge",
"private": true,
"workspaces": [
"packages/**"
],
"...": "...ほか必要な項目は追加"
}
yarn.lock を集める
そのまま yarn instal してしまうと、新たな依存関係を作ってしまう
現在の依存関係を引き継ぐため、ルートに yarn.lock を作成し、各 yarn.lock の内容を集める
/yarn.lock
# /packages/package-aaa/yarn.lock の内容をコピペ
# /packages/package-bbb/yarn.lock の内容をコピペ
# /packages/package-ccc/yarn.lock の内容をコピペ
適当にコピペしているだけだが、あとで勝手に整理されるので安心する
コピペが完了したら各パッケージの yarn.lock は削除してよい (もう使わない)
各パッケージの package.json の必須項目の存在を確認する
name, version は必須 (他にも必須のものがあるかもしれない)
ないとあとでおかしくなるので確認
/packages/package-aaa/packages.json
{
"name": "@hoge/package-aaa",
"version": "0.1.0",
"...": "...ほかの項目はそのまま"
}
/packages/package-bbb/packages.json
{
"name": "@hoge/package-bbb",
"version": "0.1.0",
"...": "...ほかの項目はそのまま"
}
/packages/package-ccc/packages.json
{
"name": "@hoge/package-ccc",
"version": "0.1.0",
"...": "...ほかの項目はそのまま"
}
yarn install
多分大丈夫なので yarn install
yarn install
After
おわり
- /
- /packages
- /package-aaa
- package.json
- ...
- /package-bbb
- package.json
- ...
- /package-ccc
- package.json
- ...
- package.json
- yarn.lock
- ...