私は3つの異なる環境ファイルを持っています environment.dev.ts environment.prod.ts environment.stages.ts
たとえば、使用するファイルを変更するには、私は--env=prod
をwebpack.config.tsに渡します。それはうまく動作します。しかし、私はまた、このような環境ファイルをインポートする必要があるサービスを持っていますimport { environment } from '../environments/environment.dev';
。私がコンソールでwebpackを起動し、--env=dev' I need to pass environments.dev.ts into my service; if I type
--env = prod 'と入力すると、私のサービスのenvironments.prod.tsになるはずです。どうすればこのことができますか?たぶん私の問題を解決する良い方法があります(別のバンドルのURLを変更する必要があります)。現時点では、私の環境のファイルにurlが含まれています。サービスに環境ファイルを渡すには?
UPDATE。 解決策が見つかりました。あなたはWebPACKのを使用している場合は、あなたのwebpack.config.jsにmodule.exportsはへ var NODE_ENV;
econst environmentFiles = {
'dev': 'environments/environment.dev.ts',
'prod': 'environments/environment.prod.ts'
、 'local': 'environments/environment.local.ts'
};
を追加するアプリを構築し、ng eject
後の環境を変更するためのコマンド
module.exports = function(env) {
NODE_ENV = env;
...
}
を追加
および
"hostReplacementPaths": {
"environments/environment.ts": environmentFiles[NODE_ENV]
},
into AngularCompilerPlugin そして、あなた
webpack build --env='name_of_your_environment'
を実行することができますし、CLIを使用してアプリケーションを生成する場合、それはenvironment.tsファイル
こんにちは、merlosyをしたい場合は、より多くのENVSを定義することができます。私はそれを知っていますが、私の場合、 'ng eject 'の後に生成するwebpackファイルだけを使う必要があります。 webpackコマンドで環境ファイルを変更するのに問題はありませんが、コンポーネントとサービスでこのファイルを変更する必要があります。 たとえば、これは私の環境ファイル '輸出のconst環境= { 生産です:偽、 newsfeedDemoUrl: 'newsfeed.demo.dev'、 demoUrl: 'demo.dev'、 onlineUrl: 'online.demo.dev' 、 トークン: 'rtue33o2pp2899s' }; ' – Belouccio
、私のコンポーネントでは、このファイルを' ../ environments/environment.prod 'の 'import {environment}'のようにインポートします。しかし、私はこのファイルを変更する必要があります。今は自分のコンポーネントでハードコアですが、prodとdevの別のURLのために変更する必要があります。 私の悪い英語を残念にして申し訳ありません:( – Belouccio
私は環境からインポートしただけですが、角度DIに依存するビルド・メカニズムは、指定したenvに基づいてenvファイルを必要なものに置き換えます – merlosy