2012-05-06 11 views
3

起動時にMeteorアプリケーションにコマンドライン引数を渡したいと思います。コマンドライン引数をMeteorアプリケーションに渡すにはどうすればいいですか?

たとえば、dev、testまたはprod環境で実行されているかどうかを示す--dev、 - testまたは--prod。その後

は、私がテストを実行した/server/server.js

var arguments = process.argv.splice(2); 
console.log('cmd args: ' + JSON.stringify(arguments,0,4)); 

ザ・にこのような何かを試してみました...など、起動時にさまざまなリソースをロードすることができます。ランダムなコマンドライン引数を持つかなりの数の人がいます。

meteor --dev 

コンソールの出力はこれだけです。

cmd args: [ 
    "--keepalive" 
] 

コマンドライン引数をMeteorアプリケーションに追加する最も良い方法は何ですか?

これは、上位レベルの問題を解決する正しい方法ですか?そうでなければ、実行中のenviroを区別するこの問題を解決する正しい方法は何ですか?

答えて

8

Meteorは、コマンドライン引数がわからない場合、あなたのアプリにコマンドライン引数を転送しません。あなたは複数の可能性があります:

  1. meteor.jsのリライト部分は、認識できないargsを転送します。これはあまり難しいことではありませんが、それはかなりの解決策ではありません。そして、更新が発生した場合、あなたは困っています。 :D
  2. 小さな設定ファイルを作成し、そこにある設定オプションに基づいてアプリの動作を変更することができます。 this questionをご覧ください。
  3. 最も簡単なことは、環境変数を使用することです。ノードのenv varsはthisのように読むことができます。その後、あなたは "express.js"の方法でアプリを始めることができます:$ METEOR_ENV=production meteor

私はあなたを助けてくれることを願っています! :)

1

meteorコマンドがプロキシを起動する(あなたが与えた引数を取得する)ため、--keepaliveという流星アプリが起動するからです。

process.argvは、meteor build --directory /my/build/pathでMeteorをビルドして実行すると、正しい値を持ちます。

関連する問題