指定されたディレクトリにnpmインストールする方法?


回答:


325

次の--prefixオプションを使用できます。

mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>

その後、パッケージがにインストールされ./install/here/node_modulesます。これmkdirは、npmがnode_modules階層の上位にある既存のディレクトリを選択する可能性があるためです。(フォルダーに関するnpmドキュメントを参照してください。)


65
--prefixオプションを使用する場合、この代替ディレクトリにpackage.jsonファイルが必要であるようです。現在のディレクトリにpackage.jsonを置き、代替ディレクトリにインストールする方法はありますか?

2
@fractalそのための私の答えを参照してください
yunzen

10
@coundy npm install(パッケージ名なしで)のパスを指定する方法はありますか?私はこれを直接thiredが、その後のためのNPMルックスpackage.jsonの中で{prefix}。私が目指しているのはpackages.json、プロジェクトのルートをにさせ、同時にすべてのパッケージをにインストールできるようにすること{project root}/{project webroot}です。
オートマティック

再帰問題に遭遇しました。一度実行するように指示する方法はありますか?私は、ディレクトリを変更してから呼び出すことによって、一時的にそれを解決しnpm installますが、--prefixそれは再帰を引き起こしていなかった場合は、よりよいソリューションのように思えます。
adi518

47

では文書は述べています:prefixオプションを使用するグローバルオプションと一緒に

接頭ノードがインストールされている場所へのデフォルトをコンフィグ ほとんどのシステムでは、これは/ usr / localです。Windowsでは、これはnode.exeバイナリの正確な場所です。Unixシステムでは、nodeは通常{prefix} /node.exeではなく {prefix} / bin / nodeにインストールされるため、1レベル上になります。

ときにグローバルフラグが設定され、NPMはこのプレフィックスに物事をインストールします。設定されていない場合は、現在のパッケージのルート、またはパッケージ内にない場合は現在の作業ディレクトリを使用します。

(彼らによる強調)

したがって、ルートディレクトリに次のようにインストールできます

npm install --prefix <path/to/prefix_folder> -g

そしてそれはnode_modulesフォルダーにフォルダーをインストールします

<path/to/prefix_folder>/lib/node_modules

2
requireパッケージをグローバルにインストールすることはできませんか?
Pavlo、2015年

3
@Pavloこれは役に立ちますか?stackoverflow.com/questions/15636367/...
yunzen

1
これを答えに追加する必要があります。
パブロ2015

6
@パブロ私はそうは思いません。それはOPへの答えではありません。
yunzen 2015

@Pavloパッケージがグローバルにインストールされている場合、いつもと同じ方法でそれを必要とします。つまり、グローバルにインストールされるパッケージを要求できます。
Rob Evans、

43

npmバージョン3.8.6以降、以下を使用できます

npm install --prefix ./install/here <package>

指定したディレクトリにインストールします。上位の階層にディレクトリがすでに存在するnode_modules場合でも、NPMは自動的にフォルダーを作成しますnode_modules。あなたも持つことができpackage.json、現在のディレクトリにしてから使用して、指定されたディレクトリにインストール--prefixオプションを:

npm install --prefix ./install/here

npm 6.0.0以降では、

npm install --prefix ./install/here ./

現在のディレクトリにあるpackage.jsonを「./install/here」ディレクトリにインストールします。Macで、node_modulesディレクトリ内の親フォルダへのシンボリックリンクを作成することに気づいたことがあります。しかし、それはまだ機能します。

注:NPMは、--prefixオプションで指定したパスを受け入れます。オプションなしでが使用された場合にのみ、フォルダーに関するnpmドキュメントに従って解決されます。npm install--prefix


1
これはうまくいかないようです、私はいつも得ますCan't install <current directory>: Missing package name
Tibor Blenessy

1
@TiborBlenessy 2番目のインストールステートメントについて話していると仮定します。現在のディレクトリに有効なpackage.jsonファイルがあることを確認してください。それでも機能しない場合は、npmのバージョンをお知らせください。これらの手順は、指定されたnpmバージョンで機能するために使用されました。そして、彼らがもうそうしなければ、私は深く潜って根本的な原因に行きたいと思います、そして私は代替案を思いつくことができるかもしれません。
Rohit Sharma

1
@RohitSharma npm 6.0.0を使用すると、このメソッドはpackage.jsonファイルが予期されるとおり機能しません./install/here
Christian Ivicevic

@ChristianIvicevic npm install --prefix ./install/here ./を使用して、package.jsonを現在のディレクトリの「./install/here」ディレクトリにインストールできます。Macで、node_modulesディレクトリ内の親フォルダへのシンボリックリンクを作成することに気づいたことがあります。しかし、それでもnpm 6.0.0で動作します
Rohit Sharma

1
@Tanoro 3番目のコマンドはnpm 6.0.0で動作し、回答で述べたようにシンボリックリンクが作成されます。私はnpm v3.5.2で最初の2つのコマンドを試したことがありません。そのため、試したnpmの特定のバージョンについて言及しました。他のバージョンでも動作するコマンドで回答を更新してください。
Rohit Sharma

0

私はpowershellビルドを使用しており、現在のディレクトリを変更せずにnpmを実行できませんでした。

startコマンドを使用して、作業ディレクトリを指定するだけで終了しました。

start "npm" -ArgumentList "install --warn" -wo $buildFolder
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.