1. ホーム
  2. macos

[解決済み] npm グローバルパスのプレフィックス

2022-04-28 16:02:38

質問

の挙動に戸惑い、いつもより慎重になっています。 npm を使用した。

私はMacを使用しており、node.jsを以下の方法でインストールしました。 brew install node .

を実行したいので jslint.js をコマンドとしてコマンドライン上で実行します。 jslint 私は、これを実現するための標準的な方法は sudo npm install -g jslint この出力で正常に実行されました。

$ sudo npm install -g jslint
npm http GET https://registry.npmjs.org/jslint
npm http 200 https://registry.npmjs.org/jslint
npm http GET https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http 200 https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http GET https://registry.npmjs.org/nopt
npm http 200 https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http GET https://registry.npmjs.org/abbrev
npm http 200 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/abbrev/-/abbrev-l.0.4.tgz
npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz
/usr/local/share/npm/bin/jslint -> /usr/local/share/npm/lib/node_modules/jslint/
bin/jslint.js
[email protected] /usr/local/share/npm/lib/node_modules/jslint
└── [email protected] ([email protected])

以後

$ jslint ply.js
zsh: command not found: jslint

により /usr/local/share/npm/bin にないため、私の $PATH .

1) なぜ brew はインストールされません。 npm bin をpathに変換しますか?多分そうだと思いますが、何か zsh がそれを台無しにしています。どこでそれを見つけることができるかもしれませんか?

2) こうすればいいのでしょうか?(追加 :/usr/local/share/npm/bin に、エクスポートされた $PATH の下にある ~/.zshrc )

後で何か他のものをインストールする場合(Homebrewなどを使って)、パスを設定するためにzsh起動スクリプトに追記する必要があるので、この方法は正しくないような気がするのです。この特殊な例では、単に npm install -g のような)適切な場所に正しいシンボリックリンクを作らない。 /usr/local/bin たぶん)。

の中に手動でシンボリックリンクを構築することになると思います。 /usr/local/bin というのも、私の場合、問題があるプログラムはすべて、これで十分なはずです。

EDIT : この古い質問は人気がありますが、私の個人的なワークフローと、nodeのインストールとそのさまざまな依存関係を管理するための最善の方法の両方において、今では古くなってしまったので、2019年にこれを更新します。

私の個人的なワークフローは、現在、システムにnodeをインストールするためにnodejs.orgから取得したインストーラを使用しています。ファイルを管理する方法を一番良く知っているので、実は自作パッケージそのものよりも信頼しています。もし、あなたのシステムの node を 8.10 から 10.15 に変更したい場合、Mac でも Windows でも、単に nodejs.org からあなたの OS 用の 10.15 のインストーラをダウンロードするだけです。homebrewでインストールしたnodeをアップグレードしようとすると、私の経験では常により困難なアプローチであることが証明されています。

また、最大のポイントは、上記の npm install of jslint の例で示したような sudo の使用は非常に推奨されないということです:私は、自作パッケージはスーパーユーザーを使ってインストールしたり操作したりするべきではないと確信しています。自作パッケージはスーパーユーザーを使ってインストールしたり操作したりするべきではありません。

さらに、私はjslintよりもESLintを推奨しており、もう何年もjslintを使っていません。

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

を拡張する PATH を使っています。

export PATH=/usr/local/share/npm/bin:$PATH

は悪くないと思います。とはいえ、そうする必要はないでしょう。

これを実行してください。

npm config get prefix

OS X でのデフォルトは /usr/local にバイナリをシンボリックリンクすることを意味します。 /usr/local/bin で、これはすでにあなたの PATH (特にHomebrewを使用している場合)。

だから

  1. npm config set prefix /usr/local 他のものであれば
  2. を使わないでください。 sudo をnpmと一緒に使うことです。によると jslint docs を実行すればよいのです。 npm install となります。

npmをsudoでインストールした場合( sudo brew install で再インストールしてみてください。 brew install . Homebrewは、あなたが sudo -自由である。