2017-11-29 16 views
3

アプリケーションで何らかの結果を得るために3つのnpmスクリプトを実行する必要があるシナリオがあります。 1つのnpmスクリプトでそれらを組み合わせました。これは私のpackage.jsonです:npmスクリプトのコマンドライン引数をその中の特定のスクリプトに渡す

"scripts": { 
    "setup": "npm install && npm run some-script && npm install", 
    "some-script": "gulp some-other-script" 
} 

は私がやりたいことはsome-scriptスクリプトにさらに渡されるコマンドラインからsetupスクリプトに引数を渡すことです。

npm run script -- --abc=123を実行すると、スクリプトの最後に引数が追加されますが、特定のスクリプト(この場合はnpm run some-script)に渡したいと思います。私はまたこのようなスクリプトの定義を書き直そうとしました: "setup": "npm install && npm run some-script -- --sample=sample&& npm install"しかし運がありません。

私はシェルの機能(ここで説明:Sending command line arguments to npm scriptとここにhttps://github.com/npm/npm/issues/9627)を認識していますが、私はクロスプラットフォームで動作するソリューションが必要です。

これを行う方法はありますか?

+0

こんにちは、私は同じケースの使用法を持っています; – Deunz

+0

スクリプトの&&部分から問題が発生しているようです – Deunz

答えて

1

私は回避策を見つけました。

第一の目標は、他のスクリプトの呼び出しに引数を指定して、いくつかのスクリプトを使用することができるようになった、とカスケードこの:メイン実行

NPM - --arg1 "main": "npm run script1 && npm run script2"

このアプローチの問題がありますカスケード接続は、npmに渡されたargを追加することによってのみ実行され、 "npm run script1 & & npm run script2"という行の最後にmainを実行します。私は第一要素にそれを渡しする方法を見つけることができませんでした:ここSCRIPT1

を実行NPMた私の周りの仕事です:あなたはpackage.jsonに追加する必要が

第一:

"config": { 
    "arg1": "ARG_VALUE" 
}, 

を次にスクリプトでは、このような呼び出しにそれを追加することができます。

"main": "npm run script_no_arg1 && npm run scrip1 -- --%npm_package_config_arg1% && npm run script2 -- --%npm_package_config_component% && npm run script_no_arg2" 

最後に、あなたが任意の引数でそれを呼び出す必要はありません:NPM メインを実行しかし、あなたは可能ARG_VALUEを変更する必要があります私の場合、私は呼んでいた一気タスク:

gulp.task('inline-build-templates', function() { 
    let component = process.argv[3]; 
    component = component.split('--')[1]; 
    console.log('RUNNING GULP TASK : inline-build-templates for component ' + component); 
    // whatever task gulp 
}); 

:それはあなたが一気タスクにそのように引数を取得することができます動作します

"cleardown": "rimraf build lib", 
"inline-build-templates": "gulp inline-build-templates", 
"step1": "npm run cleardown && npm run inline-build-templates -- --%npm_package_config_arg1%", 

フォアは、スクリプト:)

最後の事をlauncそれが役に立てば幸い。

+0

他のスクリプトの引数を最後のものよりも提供できないようですコマンドライン**からのチェーン**。あなたのソリューションは私が望むものに近いですが、私はこのコマンドを実行するたびにpackage.jsonのいくつかのプロパティを変更したくありません。とにかくありがとう – metodribic

関連する問題