1. ホーム
  2. angularjs

npm / yeoman install generator-angular without sudo

2023-10-05 10:45:46

質問

Yo を使って generator-angularjs をインストールしようとしたのですが ( ヨウマン ) sudoなし :

npm install -g generator-angular

得ることができる。

Error: EACCES, mkdir '/usr/lib/node_modules/generator-angular'

を入力すると sudo yo と入力すると、yo は sudo を使うべきではないと教えてくれます (これは完全に理解できることです)。

私は ~/node_modules ディレクトリがありますが、なぜ yo はそこにパッケージをインストールしないのでしょうか?

どのように解決するのですか?

発電機はグローバルに設置できるように設計されています。 そうでないと、いつもプロジェクトごとに使おうとしているジェネレータをインストールしなければならず、不必要に手間がかかります。また、せっかくの素敵な yo メニューを見ることもできません (もちろん、それらをインストールしない限り)。 すべて をローカルにインストールしない限り)。

npmをグローバルにインストールするための設定

では、どのようにしてnpmにパッケージをグローバルにインストールさせるのでしょうか?あなたが正しく言ったように、絶対に yo を sudo で実行してはいけません。そこには 多くの異なるソリューションがあります があり、何時間でもその長所と短所を議論することができます。

私は個人的に ユーザー パッケージが グローバル /usr/ フォルダーに /usr/ は、コンピュータ上のすべてのユーザーで共有されるソフトウェアのためのものです。たとえそのマシンしか使っていなくても、Unixのファイルシステム階層が設計されている方法を尊重する正当な理由があるのです。たとえば、ある時点でノードのインストール全体を消去することに決めた場合などです。

私が推奨する有効化方法は npm でグローバルにパッケージをインストールする から抜け出さずに $HOME を使用して、ローカルノードプレフィックスを設定します。 . これは次のように簡単に実行できます。

echo 'prefix = ~/.node' >> ~/.npmrc

をローカルシェルで実行します。その後、お気に入りのシェルの設定を変更して、グローバルノードの実行ファイルの新しいインストール先を指すように$PATHを調整したい。例えば

export PATH="$PATH:$HOME/.node/bin"

をあなたの ~/.bashrc . その後で、あなたは喜んで npm install -g generator-angular を sudo なしで実行でき、 パーミッションの衝突もありません。また、もし何かが完全に壊れてしまっていて、 最初からやり直したい場合は ~/.node ディレクトリを削除するだけです。