LoginSignup
0
0

More than 3 years have passed since last update.

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

Posted at

モノレポってとりあえず複数のパッケージをひとつのリポジトリで管理すればいいと思っていた
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
  - ...
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0