1. ホーム
  2. node.js

[解決済み】package.jsonを使用してグローバルおよびローカルに依存関係をインストールする

2022-04-15 02:59:34

質問

npm を使用して、モジュールをグローバルにインストールすることができます。 -g オプションを使用します。package.json ファイルでこれを行うにはどうしたらよいでしょうか?

package.json ファイルにある私の依存関係は次の通りです。

"dependencies": {
    "mongoose": "1.4.0",
    "node.io" : "0.3.3",
    "jquery"  : "1.5.1",
    "jsdom"   : "0.2.0",
    "cron"    : "0.1.2"
  }

を実行すると npm install のみとしたい。 node.io をグローバルにインストールし、残りのものはローカルにインストールする必要があります。このためのオプションはありますか?

解決方法は?

新しいノートです。 おそらく、こんなことはしたくないし、する必要もないでしょう。 おそらくやりたいことは、ビルドやテストなどのコマンドの依存性を devDependencies というセクションを作成します。 からの何かを使用するときはいつでも scripts は、devDependencies コマンド (node_modules/.bin) があたかもあなたのパスにあるかのように動作します。

例えば

npm i --save-dev mocha # Install test runner locally
npm i --save-dev babel # Install current babel locally

次にpackage.jsonで。

// devDependencies has mocha and babel now

"scripts": {
  "test": "mocha",
  "build": "babel -d lib src",
  "prepublish": "babel -d lib src"
}

そして、コマンドプロンプトで、実行します。

npm run build # finds babel
npm test # finds mocha

npm publish # will run babel first

新NEWノート : ここしばらくの間、私たちは npx これを使えば、devDependencies コマンドを自分の scripts セクションを作成します (必要な場合)。 例えば

npx webpack

しかし もし 本当に は、グローバルにインストールしたい場合は、package.jsonのscriptsセクションにpreinstallを追加してください。

"scripts": {
  "preinstall": "npm i -g themodule"
}

それで、実際に私のnpmインストールは、再びnpmインストールを実行します...これは奇妙ですが、動作するようです。

注意 の最も一般的な設定を使用している場合、問題が発生する可能性があります。 npm グローバルなNodeパッケージが必要な sudo . 一つの選択肢は npm の設定を変更し、この設定を不要にしました。

npm config set prefix ~/npm を追加し、$HOME/npm/binを$PATHに追加してください。 export PATH=$HOME/npm/bin:$PATH をあなたの ~/.bashrc .

もう一つの、おそらくより良い選択肢は、単に nvm を使用してNodeを管理すれば、この問題は発生しません。