各ユーザーに共通のノードパッケージを重複してインストールしないようにしています。いくつかの共通のNodeパッケージをグローバルにインストールしたいと思います。しかし、Arch Linuxでは権限の問題が発生しました。
npm install [package] -g
次のメッセージで失敗します。
/usr/lib/node_modules への書き込み権限がありません。
これはうまくいきました:
sudo npm install [package] -g
ただし、一般ユーザーがパッケージを使用しようとすると、次のエラーが発生します。
エラー:EACCES: '/usr/lib/node_modules/[パッケージ]/lib/[ファイル].js'を開く権限が拒否されました。
一部のパッケージをグローバルにインストールする必要があるとします。正しい方法は何ですか?編集:リクエストの理由を見るここ。
答え1
一般的に言えばすべてのパッケージはローカルにインストールする必要があります。。これにより、必要に応じて同じパッケージの異なるバージョンで複数のアプリケーションを実行できます。グローバルパッケージの更新により、依存関係と互換性が中断される可能性があります。
何かを作るグローバルにインストールする場合パッケージは、シェルで実行する実行可能なコマンドを提供します。
しかし、開発時にグローバルにインストールされたパッケージを使用するには、以下を使用しますnpm link <global-package>
。これにより、パッケージへのローカルリンクが作成されます(npm> = 1.0でシンボリックリンクをサポートするオペレーティングシステムでのみ使用できます。)。
詳細については、以下をお読みください。