2017-12-18 22 views
0

私はnpm package.jsonにスクリプトを作成しています。引数をnpm実行スクリプトに渡す

gulp-injectを使用して注入)

スクリプトは私のテンプレートを骨格にヨーマンを実行し、その後、私は特定のファイルにいくつかのより多くのものを行うためにゴクゴクタスクを実行したいNPMタスクは次のようになります

"scaffolt": "scaffolt -g scaffolt/generators template && gulp inject"

ここで、コマンドラインからコマンドを呼び出して、テンプレートに名前を付ける必要があります。

私は実行する必要があるコマンドは以下の通りです:

npm run scaffolt {templateName}

が、私はこれを行う場合、私は型付き{TEMPLATENAME}と同じと呼ばれるゴクゴクタスクを実行してみてください。

簡単な例:npm run scaffolt myTemplateを実行すると、2番目の部分はgulp myTemplateというタスクを実行しようとしますが失敗します。

スクリプトの2番目の部分に{myTemplate}の名前を引数として渡して、それをgulptaskで使用できるようにする方法はありますか?

現在のグループタスクはconsole.logprocess.argvです。

答えて

1

引数をnpm実行スクリプトに渡すことができます。ここにはdocumentationがあります。

これらの操作のガルプタスクを作成します。

//gulpfile.js 
const gulp = require('gulp'); 
const commandLineArgs = require('command-line-args'); 
const spawn = require('child_process').spawn; 

gulp.task('inject', ['scaffolt'],() => { 
    console.log('scaffolt complete!'); 
}); 
gulp.task('scaffolt', (cb) => { 
    const options = commandLineArgs([{ name: 'templateName' }]); 

//use scaffolt.cmd on Windows! 
spawn('scaffolt', ['-g', 'scaffolt/generators', options.templateName]) 
    .on('close', cb); 
}); 

そして、あなたのパッケージの中

//package.json 
"scripts": { 
    "scaffolt": "gulp inject " 
} 

そしてnpm run scaffolt -- --templateName=something

ヒント、それを実行するには:我々は、彼らがしているだけのような実行可能ファイルを生成できるよう NPMの実行スクリプトがPATHにnode_modules/.binディレクトリを追加同じフォルダに!

+0

と、package.jsonファイルのコマンドをどのように変更する必要がありますか? – Nick

+0

あなたは今すぐ動作するはずのコマンドを変更する必要はありませんが、npmが実際に実行するコマンドにコメントしてください。 –

+0

実行しているコマンドです。 scaffoltの構文がうまくいかない - scaffolt -g scaffolt/generatorsテンプレート{templateName}は – Nick

関連する問題