2017-02-09 10 views
1

最近、私はAPIエンドポイントのURLがシステムごとに異なるかなり古いアプリケーションに取り掛かりました。package.jsonの環境変数へのアクセス

は今、私のpackage.jsonは次のようになります。

"start": "cross-env API_ENDPOINT=http://localhost:5000/api/v1 react-scripts start" 

問題があり、この値は現在、静的である私はHerokuのにコードを配置するときに、それは私のローカルホストに接続しようとします。

"start": "cross-env API_ENDPOINT={thisShouldBeDynamic} api/v1 react-scripts start" 

それを行うにはどのような方法があります:代わりに、私はこのような何かを探していますか?

ps。 react-app-scriptsのバージョンは^ 0.4.0なので、私は.envに頼ることができず、私を信じることはできません。あなたはそれを更新したくありません。

答えて

4

JSON形式ではテンプレート自体がサポートされていないため、config.jsonという名前のスクリプトを作成して更新し、同じファイルに保存し直す必要があります。

https://www.npmjs.com/package/config-templateから始めて、必要な変数を取得して設定ファイルに追加してから同じファイルを追加する独自のテンプレートフィラーを作成できます。

+0

"prestart"で別のNodeJSファイルを起動し、package.jsonをregexで更新してプロセスを終了させる必要がありますか? – Aris

+0

コマンドを書く必要があるので、強制的に実行しなければならないので、プロセスを強制終了することについてはわかりません。私はあなたに基本的なアプローチを与えました、それはほとんどすべてのプログラム言語になることができます。 –

2

NPMフックpostinstallで起動する前にインストールを変更できます。例えばhttps://devcenter.heroku.com/articles/nodejs-support#customizing-the-build-process

"scripts": { 
    "postinstall": "node ./ops/heroku-build.js" 
} 

し、そのスクリプトで、単に適切なENV変数をお読みください。 process.envはすべてのHeroku環境変数を保持します。それらを使用してpackage.jsonを編集してください。

関連する問題