20

Node.jsインストール(Mac OS Xのv.0.4.7)にパスを追加する方法がわかりません。npmをインストールしましたが、グローバルににインストールされ/usr/local/lib/node_modulesます。しかし、npmをインストールしたとき、グローバルモジュールを配置することを選択した場所についてNodeに通知しませんでした(配置する必要がありますか?)。現在、Nodeをコマンドラインモードで使用するとrequire()、グローバルにインストールされたモジュールを単純に使用することはできません。それで、グローバルnpmモジュールのインストールパスを追加できるノード構成ファイルまたは環境変数のようなものがあるかどうか疑問に思っていますか?

Nodeのコマンドラインにいるときに配列に追加できることはわかっていますが、このグローバルモジュールフォルダーを一度だけ追加して、Nodeがコマンドからrequire.pathsモジュールを取得したときに常にそのディレクトリでモジュールを検索するようにします。require()ライン。npmとNodeを共存させるためのヘルプとポインタを事前に感謝します!

4

4 に答える 4

18

はい、分かりました。http://nodejs.org/docs/v0.4.7/api/modules.html#file_Moduleshttps://github.com/isaacs/npm/blob/master/doc/faq.md#readmeの情報を組み合わせるとモジュールをチェックするときに、NodeがNODE_PATH環境変数をチェックすることをクリアします。これを設定するために、私は次のことを行いました。

echo 'export NODE_PATH="'$(npm root -g)'"' >> ~/.bashrc

これにより、NODE_PATHがnpmのグローバルインストールフォルダーに設定されます。

于 2011-05-07T20:45:53.507 に答える
4

くそー、私は誤解しました。申し訳ありません。

トピックに戻ると、これらの2行を次のように配置できます。set-repl-paths.js

require.paths.unshift('/usr/lib/node_modules');
require("repl").start();

次に実行node set-repl-paths.jsすると、パスがすでに設定されているreplが作成されます。簡単なbashスクリプトを記述したり、シェルエイリアスを設定したりして、入力するなどの操作を行うことができますnode-repl

npm 1.xでは、ローカルインストールを使用し、コマンドラインユーティリティを提供するモジュールのグローバルインストールをそのままにしておく必要があります。

モジュールのグローバルインストールが本当に必要な場合fooは、モジュールフォルダでを発行しますnpm link foo。これで、モジュールに参加できrequire("foo")ます。

ベストプラクティスは、ローカルインストールを使用することです。

nodejsブログのnpm1.0 :グローバルとローカルのインストールを参照してください。

于 2011-05-06T08:50:52.380 に答える
2

パッケージをグローバルにインストールするには(通常、コマンドラインで使用されます)

npm install --global PACKAGE_NAME

私の場合jslint、コマンドラインツールとしてインストールしたかったのです。だから私は走った

npm install --global jslint

これにより、パッケージがにインストールされます

/usr/local/lib/node_modules/

では、なぜこれらすべてなのか?特にプロジェクトで使用されている場合は、パッケージをグローバルにインストールしないでください。

詳細については、ヘルプページをご覧ください。

npm help install

npm help global

FAQでも見つけましたnpm

于 2011-06-18T00:55:29.997 に答える
1

これへの返信: https ://stackoverflow.com/a/5923898/7381355

これを.bashrcに追加して、グローバルモジュールの要求はアンチパターンであるため、replの実行時にのみNODE_PATHを設定できます。

node() {
  if (( $# == 0 )); then
    NODE_PATH=$(npm root -g) command node
  else
    command node "$@"
  fi
}

引数がノードに渡されない場合にNODE_PATHを設定します。したがって、のようなものでは機能しませんnode -i。replが実行されるすべてのケースをカバーするには、引数チェックをさらに追加する必要があります。

これにより、replは常にNODE_PATHを設定します。replを実行するか、グローバルモジュールを使用してスクリプトを実行するかを選択できるようにする場合は、代わりにこれを.bashrcに追加できます。

node_global() {
  NODE_PATH=$(npm root -g) node "$@"
}

次に、node_globalを実行します。私は2番目のオプションを選択しました。

于 2017-01-05T22:28:40.097 に答える