2017-06-15 14 views
0

単純なノードjsプラグインを作成しようとしています。ここまで私が今まで何をしたのですか?ローカルノードjsモジュールがスクリプトを実行していません

その後、私は(同じディレクトリから)今私はnpm install -gでパッケージをインストールするときに、単一のラインconsole.log('Hi!')

を持つファイルindex.jsを持ってpackage.json横package.json

{ 
    "name": "testcli", 
    "version": "0.0.1", 
    "description": "Test CLI Tool", 
    "main": "index.js", 
    "author": "BJ", 
    "license": "ISC", 
    "bin": { 
     "testx": "index.js" 
    } 
} 

とそれは私に次のエラーを与えるコマンドtestxを実行

.../AppData/Roaming/npm/testx: line 1: /node_modules/testcli/index.js: No such file or directory 

はどうすればよいのそれとも?

答えて

0

このスクリプトを呼び出す方法をシェルに伝えるためにshebangを追加する必要があります。

スクリプトの冒頭に#! /usr/bin/env nodeを追加してみてください。

0

多くのパッケージには、PATHにインストールする1つ以上の実行可能ファイルがあります。実際には、この機能を使用して "npm"実行可能ファイルをインストールします。

これを使用するには、package.jsonのbinフィールドをローカルファイル名のコマンドマップ。インストール時に、npmはそのファイルをグローバルインストールの場合は/ binに、ローカルインストールの場合は./node_modules/.bin/にシンボリックリンクします。

例えば、myappにはこれを持っている可能性があり:

{ "bin" : { "myapp" : "./cli.js" } } 

だから、あなたがmyappというのインストール時に、それが/ usr/local/bin/myappのにcli.jsスクリプトからのシンボリックリンクを作成します。

実行可能ファイルが1つで、その名前がパッケージの名前である必要がある場合は、単に文字列として指定できます。たとえば:

{ "name": "my-program" 
, "version": "1.2.5" 
, "bin": "./path/to/program" } 

は、これと同じようになります:

{ "name": "my-program" 
, "version": "1.2.5" 
, "bin" : { "my-program" : "./path/to/program" } } 

、ビンの中で参照ファイル(複数可)ます。#/ usr/bin/envをノードで始まっていることを確認してください!それ以外の場合、スクリプトはノード実行可能ファイルなしで起動されます。

+0

ご返信ありがとうございます。私はそれらのビンに関連するすべてのものを設定しました。私が欠けていたのは '#!/ usr/bin/env node'でした。 –

関連する問題