Help us understand the problem. What is going on with this article?

yarn workspace していなかったモノレポ で workspace 化

モノレポってとりあえず複数のパッケージをひとつのリポジトリで管理すればいいと思っていた
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
  - ...
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away