2013-05-10 12 views
11

私は最近node.jsで遊び始めましたが、node、npm、nvmなどのさまざまなバージョンの大きな混乱の中で失われました。グローバルにインストールされているものとローカルにインストールされているもの(そしてローカルであれば、どのバージョンのノードを使用できるのか、パッケージはどのようにして知っていますか)は分かりません。node.jsはどこにファイルを置いていますか?

さまざまなインストールオプションの概要をご紹介します。具体的には:他の方法を使用しているとき、私はnvmapt-getmake installを使用する場合や、

  • ノードがインストールされていますか?
  • ノードをローカルにインストールすることをお勧めしますか?
  • システムが認識可能なbinフォルダに自分自身をインストールするのではなく、~/.profilenvmに変更されるのはなぜですか?
  • nvmは、ノードの異なるバージョンを互いに並べてインストールできることがわかりました。なぜこれをやりたいのですか?代わりにローカルにインストールすることはできますか?
  • npmはどこにパッケージをインストールしますか?私はそれがノードのパッケージaganistのバージョンをチェックすることを見た、ノードがアップグレードされると、これらのパッケージはどうなるの?
  • グローバルインストールまたはローカルインストールを使用する方がよい場合はありますか?
  • npmnvmnaveの違いは何ですか?私のパッケージはどこに置くべきですか?

EDIT:あなたはpackage.jsonとfolserに

npm install 

を実行する場合はノードhereをインストールする方法はたくさんありますが、これは、それを私はさらに混乱して...

答えて

16

nvm、apt-get、make installを使用する場合、または他の方法で を使用する場合、ノードはどこにインストールされますか。

apt-getを使用して、しかしバイナリ、マニュアルファイル、共有ファイル、ログなどを格納するためのUbuntuの規則次のファイルシステム上のすべてのソフトウェアだけでなく、ノードをインストールし、あなたによapt-getを配布リリースサイクルによって決定されるノードの特定のバージョンのみを有する。利用可能なアップデートがある場合、それらはapt-get update; apt-get upgradeと一緒にインストールされます。ただし、一部のアプリの最新バージョンは、配布に入るまで利用できません。たとえば、ノードv0.x.yは、Ubuntu 13.10が手作業でインストールするための唯一の方法です。 apt-getまたは他のシステムパッケージマネージャの優位性は、アップデートとパッケージの削除を管理することです。ソフトウェアパッケージに関するすべてのデータを独自のデータベースに格納します。 apt-get remove nodeでいつでもノードを削除することができます。それだけです。

make install手動でパッケージをインストールしますが、それは有害であるとみなされます。 make installは主にパッケージを簡単に削除できないため使用しないでください。Makefileを読んで、それによってインストールされたすべてのファイルを手動で削除する必要があります。 make installを使用する場合は、常にcheckinstallが利用可能です。ネイティブパッケージを作成してシステムに登録するソフトウェアです。パッケージを削除する場合は、多数のコマンドではなく1つのコマンドでこれを行うことができます。 wiki link; Ubuntu guide on checkinstall

nvmスクリプトはnode version managerです。非常に便利で使いやすいです。これにより、複数のバージョンのノードをマシンに並列にインストールして使用することができます。それはmake installのようなソースからノードをコンパイルしないので、非常に高速です。ディストリビューションのリリースサイクルに依存しないので、現在利用可能なすべてのノードバージョンにアクセスできます。 nvmはプリコンパイルされたバイナリをダウンロードし、一般的な使用に最適です。これは、ノードファイルをローカルの自分のフォルダに保存するので、簡単に行うことができるさまざまなノードバージョン間で何かを比較したい場合に備えてください。

ローカルにノードをインストールすることをお勧めしますか?

nvmをローカルで使用している場合は、開発とテストに非常に適しています。ソースからインストールされているか、またはプリコンパイルされたバイナリを使用している間に、運用パフォーマンスの影響とメリットが不明です。私は開発のためにnvmを使用し、本番環境ではソースからインストールします。しかし、誰かがこの問題をこれ以上説明できれば、私はもっと学ぶことができてうれしいです。

システム認識可能なbinフォルダにnvmをインストールする代わりに〜/ .profileを変更するのはなぜですか?

nvmは実行可能ではないためです。これはシェルがソースとし、別々に使用できるbash関数のセットです。 isがあなたのシェルにソースされた後、メインスクリプトなしでnvm_lsnvm_ls_remoteなどを呼び出すことができます。メインスクリプトがコマンドライン引数を解析し、例えば `nvm_ls_remote 'のような場合に出力をきれいに表示します。

〜/。次の行は、あなたのシェル

[[ -s /home/USERNAME/.nvm/nvm.sh ]] && . /home/USERANME/.nvm/nvm.sh # This loads NVM 

負荷のすべての機能を追加されたプロファイル私はNVMが互いに並んノードの異なるバージョンをインストールすることができたことを見た - なぜ私はこれをしたいのでしょうか?代わりにローカルにインストールすることはできますか?

インストールし、あなたはmake installまたはcheckinstallを使用してローカルにインストールできますが、その他node_0.8.1、node_0.8.2、node_0.10.1、のようにそれらのエイリアスを作成する必要があります、あなたは新しいエイリアスを管理する必要がありますすべてのパッケージは、あなた自身が必要でない場合に備えて削除します。これらは、エラーが発生する可能性がある退屈で退屈な作業です。 nvmは無料でこれらの作業をすべて行います。

ノードのさまざまなバージョンでアプリケーションをテストするには、これを実行する必要があります。たとえば、あなたはv0.8でうまくいき、テストされていますが、v0.10.3の新機能を使いたいのですが、どうやってやっていますか?あなたは、ソースコードをダウンロードし、コンパイルし、エイリアスを作成し、あなたのアプリを実行しなければなりません。ちょうどnvm install 0.10.3でこれを行い、あなたのアプリを走らせることができます。 ノードの複数のバージョンをサポートする必要がある場合があります。例えば、いくつかのホストされた環境は、最新のリリースと連絡を取っておらず、v0.6しか持っていません。あなたのサーバーアプリケーションを使用しているあなたのクライアントはこのバージョンに特有のバグに遭遇するかもしれません。バグを修正するときは、最初にそれを再現する必要があります。を使用すると、v0.6のインストールは1行30分です。この方法で簡単にすべてのバージョンをチェックすることができます。異なるバージョンの下でコードをテストし、あなたが良いことを確認してください。

npmはどこにパッケージをインストールしますか?私はそれがノードのパッケージaganistのバージョンをチェックすることを見た、ノードがアップグレードされると、これらのパッケージはどうなるの?

あなたがnvmを使用している場合-gオプションでグローバルにインストールされているパッケージは、関連するノードのバージョンに関連付けられています。 nvm use 0.xでバージョンを切り替えるときは、パッケージを再度インストールするか、nvm copy-packages <version>を使用してパッケージを現在のバージョンから使用する必要があります。パッケージがローカルにインストールされている場合は、それが依存します。 package.jsonには、アプリの依存関係に関する情報が含まれているはずです。 node: '0.8'と言い、0.9に更新しただけでは、問題が発生する可能性があります。たとえば、最新のリリースでは0.6と比較して、process.nextTickの動作が変更されました。ので注意してください。

グローバルインストールまたはローカルインストールを使用する方がよい場合はありますか?どこにパッケージを置くべきですか(そしてデフォルトでどこに置くのですか?)

これは依存しています。開発のために私の意見ではnvmが優れています。私にとっては、それは便利で簡単です。本番環境では、ご使用のシステムに最適化されていないプリコンパイル済みバイナリ・ファイルを使用する際に、パフォーマンスに影響を及ぼす可能性があります。関連する経験を持つ人々が答えられるように、これを別の質問として尋ねる方が良いでしょう。

npm、nvm、naveの違いは何ですか?

npmnode package managerである - それは他の人によって開発されたユーザランドパッケージが含まれています>link。これらのパッケージはノードコアの一部ではありません。npmは、コードと依存関係管理の公開に使用されます。あなたのアプリが他の人によって開発された他のアプリを必要とする場合は、npmで公開すると便利です。

nvmは、node version managerとは全く別物です。これにより、同じマシン上のノードのバージョンを簡単に切り替えることができ、$PATH環境変数のすべての変更を管理できます。

操作システムの更新マネージャーとしてnvmを、このシステムのアプリケーションマネージャーとしてnpmを検討してください。さて、この比較は正確ではなく、ただ

naveは基本的にnvmと同じですが、nvmがシェルに供給されるスクリプトであるのに対し、それが実行可能である私の心に出くわしました。各システムにはそれぞれ独自の利点があります。ユースケースと相違点について別の質問をすることができます。

私の答えは完全ではなく、多くの主観的な個人的意見を含んでいます。しかし、少なくともいくつかの点を明確にして、より具体的な他の質問を進めることができるようにしたいと思います。 Btw、あなたのこの質問リストは別の質問として尋ねることができます。私はstackoverflowが特定の質問が別々に頼まれ、関連経験を持つより多くの人々が貢献できるときに最良の結果をもたらすと信じています。

+0

それは素晴らしい答えです、ありがとう!私はちょうど混乱していたので、多くの質問をしました。私はいくつかの具体的な質問をするときに私は別にそれを求めます。 – mik01aj

+0

非常に有益な答え! OPによってもたらされたすべてのオプションに関する本当に良い見通し。 – Qcom

3

ますすべてのパッケージlocaly(現在のフォルダ内に)をインストールします。

また、npmのデフォルトインストールパッケージはローカルです。あなたがあなたのアプリケーションのローカルコンテキストでのモジュールをインストールすることができ

+0

ここで「グローバルに」とはどういう意味ですか?同じことは "ローカル"について - 私は 'node_modules'フォルダーを使用していると思いますが、このフォルダーをどのように作成するのか分かりません。 – mik01aj

+0

答えを拡張して試してみてください – Eugene

+3

は、このコンテキストでは、 'npm install 'を実行するのと同じフォルダの 'node_modules'フォルダにパッケージがインストールされていることを意味します。グローバルには、システムレベルでインストールされ、どこからでも利用できることを意味します。 –

1

すべてのNPMの設定の説明を参照

npm config list 

npm install -g <package> 

は、次のコマンドを実行します。-gフラグを使用する - ためのグローバルにそれをインストールこの場合

npm install modulename

モジュールがアプリケーションのnode_modulesフォルダにインストールされます。

そうしないと、モジュールは通常は/ usr/local/bin /モジュール名の穴のシステム環境にインストールされます。この場合、

npm install -g modulename

とグローバルコンテキストでモジュールをインストールすることができます。

エクスプレスやノードインスペクタなどの複数のアプリケーションで必要なモジュールには、グローバルインストールが適しています。

関連する問題