2017-11-10 14 views
0

私は角型2/4/5アプリケーションの開発に取り組んでいます(そのため2/4/5)、webpackを使ってすべてをバンドルします。アプリケーション自体はC#で書かれたバックエンドAPIと通信します。ここでは、前述のバックエンドAPIに4つの異なるエンドポイントをもたらす4つの異なる環境をサポートする必要があるため、VSTSビルド定義と組み合わせてnpm run build:environmentの間にエンドポイントの値をどのように置き換えることができるかを検討しました特定のスクリプトを実行するときにも変換を行う必要があります。特定の環境に基づいてビルド時に設定ファイルのエンドポイント値を置き換えますか?

これは、設定ファイルがどのように見えるかです:

const AppConfig = {  
    hubName: "eventhub", 
    baseApiUrl: "https://endpoint.com/api/", 
    baseUrl: "https://endpoint.com/" 
}; 

私はwebpack.prod.jswebpack.dev.jsで開始し、私は構成された2つのスクリプトがあります。build:prodbuild:devを。それらのwebpackファイルの両方ともprocess.env.ENVの値をそれぞれproductiondevelopmentに設定しています。その情報を使って、process.env.ENVの値をのファイルで読み込み、値に基づいてbaseApiUrlbaseUrlの値を設定しましたが、それはうまくいかなかったが、デフォルトではdevelopmentに戻りました。そのアプローチを放棄し、webpacknormalModuleReplacementPluginを使用するなど、他のオプションを検討し始めましたが、ほとんど成功しませんでした。

ビルドタスクの実行中に設定ファイルの特定のプロパティを置き換える方法はありますか?

+0

を私は[この]だと思う(HTTPS :/stackoverflow.com/questions/38116352/best-practices-of-config-value-update-for-build-definitions?rq = 1)SOの投稿は、あなたが必要とするものを手助けし、適切なトラックにあなたを設定する – ThePretendProgrammer

+0

ありがとう!このポストは貴重な洞察を私に提供しましたが、提案された答えは実際は私にとって完璧な解決策です。 –

答えて

1

webpack DefinePluginであなたのtypescriptコードの中の変数をwebpack設定ファイルで指定する値に置き換えることができます。

PS:しかし、私の場合には、私は正確な値を指定しない - その代わり、私はWebPACKのコンフィグ内process.envから値を読み取るので、私は唯一のコンフィグ必要です:

plugins: [ 
    new webpack.DefinePlugin({ 
     ENV: JSON.stringify(process.env.ENV) 
    }) 
] 
+0

これは完全に機能します!ありがとう! –

関連する問題