ワークスペース

ワークスペース機能を使うと1つのプロジェクトで複数のnpmパッケージを管理できるようになり、かつnode_modulesを1箇所にまとめることができます。

設定

プロジェクトルートのpackage.jsonへは以下のような設定が必要になります。

{
  "private": true,
  "workspaces": [
    "packages/**/*",
    "example"
  ]
}

private:trueは必ず設定が必要です。workspacesへはパッケージとなる(package.jsonを持っている)ディレクトリへのパターンや相対パスを記述します。

これで例えば、examplepackages/foo/hogeといったディレクトリがpackage.jsonを持っていればnpm管理プロジェクトだとすることができます。
この状態でexamplepackages/foo/hoge双方でreactをインストールするとルートのnode_modulesだけにreactディレクトリが作られます。(bin系は各ディレクトリに作られる)

ルートへのパッケージインストール

ルートに共通パッケージをインストールしたい時などは-Wオプションが必要になります。