2017-04-19 8 views
4

私は、角度cliアプリケーション(角度バージョン4.0.0)を持っています。私は、CLIから作成されたenvironment.tsファイル内の自分の環境変数にアクセスできるようにしたい。angular-cliから作成されたenvironment.tsファイルのprocess.envにアクセス

例:私は私の角度のアプリを構築する場合

export SOME_VARIABLE=exampleValue 

私は「exampleValueは」SOME_VARIABLEフィールドに移入することにしたいです。

// environment.ts 

export const environment = { 
    production: false, 
    SOME_VARIABLE: process.env.SOME_VARIABLE 
}; 

残念ながら、このファイルではprocess.envを使用できません。どうすればそれにアクセスできますか?

+1

組み込みの方法が見つからない場合は、[eject](https://github.com/angular/angular-cli/wiki/eject)し、webpack [DefinePlugin](https: //webpack.js.org/plugins/define-plugin/)。 –

+0

ありがとうございました!私は排出について知らなかった – Blake

+0

いくつかの回避策があります:https://github.com/angular/angular-cli/issues/4318 – Kildareflare

答えて

0

これを解決する1つの方法は、プレースホルダを置き換えるノードスクリプトを作成することです。

これは、npmからreplace-in-fileで実行できます。

ソリューションは、次のようになります置き換える-にファイル--save-devの

  • をプレートホルダー

    export const environment = { 
        production: true, 
        version: '{BUILD_VERSION}' 
    } 
    
  • を作成

    1. NPMをインストール

      プレースホルダを置き換えるノードスクリプトを作成する(ルートフォルダのreplace.build.js)

      var replace = require('replace-in-file'); 
      var buildVersion = process.env.BUILD_NUMBER; 
      const options = { 
          files: 'environments/environment.ts', 
          from: /{BUILD_VERSION}/g, 
          to: buildVersion, 
          allowEmptyPaths: false, 
      }; 
      
      try { 
          let changedFiles = replace.sync(options); 
          console.log('Build version set: ' + buildVersion); 
      } 
      catch (error) { 
          console.error('Error occurred:', error); 
      } 
      
    2. ビルドプロセスf.eでこのノードスクリプトを実行します。一息

      gulp.task('updateVersion', function (done) { 
          exec('node ./replace.build.js', function (err, stdout, stderr) { 
          console.log(stdout); 
          console.log(stderr); 
          done(); 
          }); 
      }); 
      

    に今すぐあなたのアプリでenvironment.versionを使用することができます。

  • 関連する問題