node.jsの仮想環境はありますか?


133

wikiモジュールのページを検索しましたが、virtualenv(python)やrvmに似たものは見つかりません。

ここの誰かがnode.jsを自分の環境に分離していますか?システム全体にnpmをインストールしたくありません。

回答:


44

システム全体のnpmパッケージが主な問題である場合は、npmで非常に優れた「バンドル」コマンドを使用することを検討してください。これは、rvmではなく、gemのフリーズまたはレールでのbundlerの使用に近いものです。

とても簡単です。package.jsonファイルを作成するだけです。

{ "name": "yourapp", "version": "0.0.1", "dependencies": {"jade": "0.4.1"}}

次に実行します:

npm bundle vendor

または、npmバージョンが1.0以上の場合は、次を実行します。

npm install

ベンダーディレクトリにフリーズします。次に使用します:

require.paths.unshift('./vendor');

1
@andho私自身はこれをテストしていませんが、最近のバージョンのNPMは単にnpm installこれを使用するだけであることを理解しています。
Marnen Laibow-Koser

13
テストされ、確認されました。NPM 1.0の時点でnpm install置き換えられたnpm bundleと思います。
Marnen Laibow-Koser

184

nodeenv -node.jsの仮想環境(アナログvirtualenv


これは最初は見栄えが良かったのですが、node.jsがコンパイルされている(osx Lionで)と同時にnodeenvでnpmのインストールを実行できませんでした。おそらく、nvm installを使用して、各nodeenvにnpmを個別にインストールすることができたでしょう...試してみると思ったときには、すでに他の方法で複数のノードバージョンが作成されていました。
MikaelLepistö2012年

2
既存のPython仮想環境にインストールて、node.js環境がPython環境と共にアクティブ化されるようにするために使用できます。を参照してくださいnodeenv -p
naitsirhc 2014年

3
nodeenv(実際にはvirtualenv + nodeenv)も魚シェルユーザーに適しています。naveなどはbashとzsh以外のシェルをサポートしていないためです。
akarca 2014年

1
それと同等のvirtualenv-wrapperもありますか?
vmonteco 2018

25

役立ついくつかのノードバージョン管理システムもあります。

Naveをチェックしてくださいhttps://github.com/isaacs/nave

NVMはhttps://github.com/creationix/nvmでも使用できます

n https://github.com/visionmedia/nと呼ばれるものもあります


1
nvmは、node.jsとnpmのさまざまなバージョンを同時にインストールしたい場合に最適です。残りについては、npmを使用してプロジェクトディレクトリに必要なモジュールをインストールするのに十分であることがわかりました。
MikaelLepistö2012年

2
ディレクトリを変更するときに、nvmまたはn自動切り替えが必要な場合は、次を参照してくださいavngithub.com/wbyoung/avn
wbyoung

1
私が見る限り、nは仮想環境ではありません。それは、npmを除くすべてのグローバルにインストールされたライブラリを共有します。
Yannic Hamann

7

bxjxの答えは概念的に正確です。ただし、bundleコマンドはディレクトリを取得しないことに注意してください。それは常にパッケージをnode_modulesフォルダーにドロップするので、npmは後でパッケージを見つける場所を認識します(依存関係の二重インストールを回避できます)。

ソリューションには、おそらくnpmとnaveを「システム全体」(つまりPATH~どこかにある)にインストールする必要がありますが、その後、仮想環境に特定の依存関係のみをインストールします。

私はgithubの問題についてより徹底的に応答しました

tl; dr:ユースケースは有効であり、大部分はそこにありますが、提供できるほど十分には機能していません。私たちはそれをじっくり考えて正しく行う必要があります。


GitHubの問題はもう存在していないようです。更新されたリンクはありますか?
Drazisil

4

常に依存関係をグローバルにインストールする必要はありません。その後、あなたはNPMパッケージが提供するコマンドを使用することができますので、通常それはお勧めしますが、あなたは(でローカルにインストールする場合node_modules、ディレクトリ)、あなたはまた、これらのコマンドを使用することができ、彼らだけで巻き上げるnode_modules/.bin/あなたが入力する必要がありますので、ディレクトリnode_modules/.bin/<command>、これは面倒ですが、もちろんこのパスをPATH環境変数に追加できます。

export PATH=node_modules/.bin:$PATH

その後、入力するだけ<command>で機能します!

実際には、.binディレクトリへの絶対パスを返すnpmコマンドがあります。

$ npm bin
/path/to/node_modules/.bin

このコマンドは、プロジェクトのサブディレクトリにいる場合にも機能します。このコマンドは、node_modules/.bin親ディレクトリで最初に見つかったディレクトリを返します。

このエイリアス.bashrcをに追加して、.bin/ディレクトリを自動的に追加することができますPATH

alias nodebin='export PATH=$(npm bin):$PATH'

したがってnode_modules/、ルートにディレクトリがあるプロジェクトのディレクトリにいるnodebin場合は、入力してから、.bin/ディレクトリにあるすべてのコマンドを使用できます。



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