1. ホーム
  2. node.js

[解決済み] NPM 7 ワークスペース - ワークスペースに新しいパッケージをインストールする方法は?

2022-03-09 14:18:46

質問

もし NPM 7ワークスペース このように

root
   - submodule0
   - submodule1
   - submodule2

で、submodule0ディレクトリに移動して、以下を実行します。 npm i somepackage を実行すると、submodule0 ディレクトリに新しい package-lock.json を作成し、すべての依存関係をそこにインストールすることによって、ワークスペースを "break" しているようです。 言い換えれば、ワークスペースを作成する前に存在していた古い動作を行うだけです。 私は、次のようなコマンドを期待していました。 レルナ からサブモジュール 0 に新しいパッケージをインストールすることができます。 ルート . みたいな感じ。

npm i somepackage --scope submodule0

今のところ、唯一の回避策は、submodule0 の package.json を編集して、その中に somepackage を手作業で行っています。 その後 npm i をルートから取得します。 ルートで1行入力するのとは対照的に、@最新バージョンを調べたり、サブディレクトリに移動したり、package.jsonを開いたりする必要があるため、明らかに理想的ではありません。

解決方法は?

NPM v7.14.0以上であれば、上記のmattwadの回答を参照してください。

元の回答

提案された内容にはあまり納得がいきませんでしたが、それらをすべて組み合わせて、依存関係のないnpmスクリプトで使用するようにしました。

{
   "add": "npm install --package-lock-only --no-package-lock --prefix",
   "postadd": "npm install"
}

これは、次のように使うことができます。 npm run add -- submodule0 somepackage