LoginSignup
1
2

More than 5 years have passed since last update.

モノレポ運用時のexamplesの参照

Last updated at Posted at 2017-10-22

12/14 追記

fileで参照するよりモノレポ管理下に置いた方が何十倍も便利でした。
その理由は3点あります。

  1. 更新が楽
    プロジェクトのルートでyarn upgrade-interactiveを叩くとサンプルの依存を含めて更新できます。非常に簡単です。

  2. 確認が楽
    fileでの参照だと依存の依存の更新まで見ません。ですので、ライブラリを更新したのにexampleに反映されないことがあります。

  3. package.jsonが素直
    lernaによりバージョンが管理されているのでライブラリのバージョンが更新されるとサンプルのバージョンも追随して更新されます。よって、fileなどプロジェクトに依存している部分がなくなるので、常にサンプルのpackage.jsonがコピペ可能な状態になります。

考えられる反論としては、サンプルを入れると依存が増え開発時のインストール時間が長くなる等考えられますが、CIの時間を見るかぎり全く差はありませんでした。(むしろ時間帯によるズレが大きい)

方法

ルートのpackage.jsonに以下を追記します。

package.json
  "workspaces": ["packages/*", "examples/*"],

追記おわり


lernaを使い、モノレポを運用時にexamples以下もそれぞれのpackageのバージョンに縛られずに運用できると便利です。
lernaの機能で何かできないかと思いましたが、ありませんでした。

しかし、よくよく考えてみるとpackage.jsonのdependencisはfileという書き方で相対パスでパッケージを指定出来ます。

{ 
    "dependencies": {
        "foo": "file:../../pkgs/foo"
    }
}

ですので、examples以下が開発中のパッケージを参照するときは、上記のように対応することにしました。

参考までに、今開発しているs2sでは以下のように書いています。

  "devDependencies": {
    "enzyme": "^3.0.0",
    "enzyme-adapter-react-16": "^1.0.2",
    "enzyme-to-json": "^3.1.4",
    "flow-bin": "^0.57.3",
    "react-test-renderer": "^16.0.0",
    "s2s": "*",
    "s2s-plugins-redux": "file:../../packages/s2s-plugins-redux"
  }
}

ここまで書いて思いましたが、別にモノレポに限った話ではないですね。
やや、モノレポそのものに惑わされた感じがします。

1
2
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
1
2