ワークスペース機能を使うと1つのプロジェクトで複数のnpmパッケージを管理できるようになり、かつnode_modulesを1箇所にまとめることができます。
設定
プロジェクトルートのpackage.jsonへは以下のような設定が必要になります。
{
"private": true,
"workspaces": [
"packages/**/*",
"example"
]
}private:trueは必ず設定が必要です。workspacesへはパッケージとなる(package.jsonを持っている)ディレクトリへのパターンや相対パスを記述します。
これで例えば、exampleやpackages/foo/hogeといったディレクトリがpackage.jsonを持っていればnpm管理プロジェクトだとすることができます。
この状態でexampleとpackages/foo/hoge双方でreactをインストールするとルートのnode_modulesだけにreactディレクトリが作られます。(bin系は各ディレクトリに作られる)
ルートへのパッケージインストール
ルートに共通パッケージをインストールしたい時などは-Wオプションが必要になります。