1

独自の CLI コマンドを持つ NPM パッケージを作成しました。

そのパッケージに という名前を付けて、 npmjs.comxyzで利用できるようになったと想像してみましょう。

したがって、ユーザーが を実行して、このパッケージを自分のプロジェクトにインストールするとしますnpm install xyz

xyzそして今、彼は自分のプロジェクトの端末でパッケージが提供する CLI コマンドを実行したいと考えています。

xyz do_this

ユーザーがこのパッケージをグローバルにインストールせずにこれを行うことはできますか? または、ユーザーの追加構成なしですか?

package.jsonxyz パッケージの一部を次に示します。

{
  "name": "xyz",
  "version": "1.0.0",
  "description": "Description",
  "main": "index.js",
  "preferGlobal": true,
  "bin": "./index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
........
4

1 に答える 1

1

これがnpmの仕組みです。パッケージをローカル ディレクトリにインストールすると、package.json を含むフォルダー内の node_modules 内に実行可能な依存関係ファイルがインストールされますが、--global を使用すると、ユーザーがパスを設定した場所にグローバルに配置されます。たとえば、実行するnpm install http-serverと、実行可能ファイルは次のよう./node_modules/http-server/bin/http-serverになりますが、グローバルにインストールすると、次のようになりますnode_modules/http-server/bin

これに対する回避策は、実行可能ファイルを実行したい場合は、 so のように内部で実行すること./node_modules/http-server/bin/http-serverです。コマンドとして使用する場合は、ユーザーにパスにディレクトリを追加してもらう必要があります。これにより、ユーザーがコマンドを入力すると、コンピューターはそのフォルダー内でコマンドを検索します。Linux で PATH ディレクトリを追加するためのガイドを次に示します。ディレクトリ/pathtofolder/node_modules/http-server/bin/またはフォルダを追加するだけです。https://linuxize.com/post/how-to-add-directory-to-path-in-linux/

たとえば、ローカル フォルダーからパスに http-server を追加する場合は、次のコマンドを実行します。

export PATH="/pathtofolder/node_modules/http-server/bin/:$PATH"

幸運を!どうすればあなたを助けることができるか教えてください!

于 2021-05-24T20:33:29.203 に答える