2017-06-27 9 views
1

plop jsという外部コマンドツールを使用するパッケージをビルドします。私のpackage.jsonでは、index.jsファイルを参照するバイナリを追加したいと思います。Npmパッケージプログラムでスクリプトを実行する方法

"scripts":{ 
    "plop": "plop" 
    }, 
    "bin": { 
    "my-command": "index.js" 
    }, 

index.jsファイルに私のパッケージからplopスクリプトを実行する方法はありますか?

私の目標は、ユーザーがmy-commandを端末に書き込むときにこのスクリプトを実行することです。 (と私は、これは消費者に透明にする、ローカルプロップを使用)

+0

潜在的には、コマンドを呼び出すときに 'require( 'plop')'を 'index.js'ファイルに追加するだけです。 – roryrjb

+0

動作しますが、エラーが表示されます:plopfileが見つかりません – undefined

答えて

1

requireを直接使用できない理由はCLIです。 CLIとしては、何もエクスポートしませんが、入力としてprocess.argvを使用します。だからあなたが本当に必要とするのは、require ing plopの前にスクリプト内のprocess.argvを変更することです。

process.argv.push('--version'); 
require('plop'); 

あなたは、あなたが実行したい特定のファイルを指すように--plopfile引数で構築を使用することができます。

+0

例を追加できますか? – undefined

+0

@undefined私は、動作するはるかに単純な考え方で自分の答えを更新しました。 – amwmedia

+0

私はこれをやろうとしています:process.argv.push( ' - plopfile' + __dirname + '/plopfile.js');しかしそれはまだplopfileを見つけることができません、なぜあなたはアイデアを持っていますか? – undefined

-1

NPMのscriptsは常にnpm run plopのように実行されている(開始のを除く)です。 通常、起動コマンドは通常npm startのように実行され、全員が知っています。複数のコマンドを実行する必要がある場合は、そこにコマンドをチェーンすることもできます。

あなたが最初のコマンドとしてウンチ実行したいと仮定すると:あなたはnpm startを入力した場合、あなただけの何かを実行したい場合は、それは

"scripts":{ 
     "start": "plop && node index.js" 
    }, 

index.js プロップ、その後ノードを実行します**一度*をインストールした後、"postinstall" : "plop"

関連する問題