web-dev-qa-db-ja.com

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

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

ここの誰もが独自の環境でnode.jsを分離していますか? npmをシステム全体にインストールするのは本当に嫌いです。

123
Frangossauro

システム全体のnpmパッケージを使用することが主な問題である場合は、npmで非常にクールな「バンドル」コマンドを使用することを検討してください。これは、rvmではなく、gemsを凍結するか、Railsでバンドラーを使用することに近い方法です。

とても簡単です。 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');
39
bxjx

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

178
shorrty

役立つことができるNode=バージョン管理システムもあります。

Naveをご覧ください https://github.com/isaacs/nave

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

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

23
Epeli

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

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

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

tl; dr:ユースケースは有効で有用であり、主に使用されていますが、十分に機能していません。私たちはそれをよく考え、正しく実行する必要があります。

7
isaacs

依存関係を常にグローバルにインストールする必要はありません。通常は、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/にあるすべてのコマンドを使用できます。ディレクトリ!

2
gitaarik

より良い方法があるように見えます:

Node.jsとnpmをPython Virtualenv にインストールする

グローバルbin環境を台無しにせずにノードツールを使用できるようになりました

1
Gohan

シンプルなものが好きなら、visionmediaの n をお勧めします。

https://github.com/visionmedia/n

0