👏

npm workspaces で追加した workspace を削除する方法

2024/09/11に公開

これは何

npm workspaces 機能で追加した workspace を削除する方法について調べたメモ

https://docs.npmjs.com/cli/v10/using-npm/workspaces

公式に削除する方法は、現状無い

stack overflow に質問があった

https://stackoverflow.com/questions/78435644/npm-remove-workspace-from-monorepo

現状として npm として公式に workspace を削除する機能は提供されておらず、 GitHub Issue や Pull Request が存在するが、まだ取り込まれていない状況

https://github.com/npm/cli/issues/5463

https://github.com/npm/cli/pull/5478

どうすれば良いのか

pnpm を使う

stack overflow のコメントでは pnpm を使うという解決策が提示されていた
pnpm ではルートディレクトリに yaml ファイルを配置して、 workspace を管理するという機能

https://pnpm.io/workspaces

もちろん npm との互換性は無いため、すでに npm workspaces を使用している場合は別の方法が必要

すでに npm workspaces を使用している場合

ひとまず手動で対応する方法をまとめておく
packages/b を追加したものの削除したいという場合、まずは package.json を編集する

  "workspaces": [ 
    "packages/a", 
    "packages/b"
  ]

workspaces に含まれるパッケージ情報を削除する

  "workspaces": [ 
    "packages/a"
  ]

package-lock.json と node_modules を削除

rm package-lock.json
rm -rf node_modules

再度パッケージをインストールする

npm install

これで良さそう

試した環境

% sw_vers
ProductName:		macOS
ProductVersion:		14.6.1
BuildVersion:		23G93
% node --version
v20.16.0
% npm --version
10.8.1

Discussion