2017-03-13 5 views
0

Ember CLIには、開発、テスト、および運用環境があります。 私はテストサーバーとプロダクションサーバーを持っています。そして、私は生産環境のようなテストサーバ上でビルドを行う必要がありますが、別の環境設定を使用する必要があります。しかし、自動試験にはEmber CLIのenvを使用してください。Ember-CLI用のステージング環境を作成するには?

私はember-cli-build.jsファイルに次のオプションを使用してテストサーバー上ember build --environment developmentを呼び出そうとしました:

var app = new EmberApp(defaults, { 
    // Add options here 
    fingerprint: { 
    prepend: 'https://s-test.mycdn.com/', 
    enabled: true 
    } 
}); 

しかし、私はエラーを得た:

The Broccoli Plugin: [AssetRewrite] failed with: 
TypeError: Cannot read property '2' of null 
..... 
The broccoli plugin was instantiated at: 
..... 

テストサーバー上の燃えさしのアプリケーションを構築するための正しい方法は何ですか?

+1

try 'ember build --environment = development'あなたがいない' = ' – kumkanillam

答えて

1

残念ながら、ember-cliの環境のサポートは貧弱です。あなたは開発と生産のみを持ち、新しいものを追加することはできません。さらに、製品ビルドでは、テスト/ステージングサーバーや時間のかかる作業では必ずしも必要ではない小型化、フィンガープリンティングなどの追加作業が行われます。

良いニュースはenvironment.js内のNode APIにアクセスできることです。実際、environment.jsはノードモジュールです。これにより、追加のパラメータをember buildに追加して解析することができます。私はsuccessfuly ember-cli 2.7でこのトリックを使っていて、2.8でも使っています。 minimistをインストール

  1. var argv = require('minimist')(process.argv.slice(2)); 
    console.log('Sub-environment is set to ' + argv.subenv); 
    
  2. 異なる認識するenvironment.jsで
  3. 使用argv.subenv「サブ:npm install minimist --save-dev

  4. がenvironment.jsの先頭にこのコードを追加するには、必要があります。環境 "と呼ばれる。私は、「環境」ブロックの後にこれを行うことをお勧め:

    if (argv.subenv === 'mirage') { 
        ENV['ember-cli-mirage'] = { 
         enabled: true 
        }; 
    
        ENV.API.namespace = ''; 
        ENV.API.host = ''; 
    } 
    
    if (argv.subenv === 'staging') { 
    
        ENV['ember-cli-mirage'] = { 
         enabled: false 
        }; 
    
        ENV.API.host = 'https://your-server.com/'; 
        ENV.API.namespace = ''; 
    } 
    

    あなたが必要としてあなたはあなたのコードでenvironmentargv.subenvを組み合わせることができます。

  5. 作成時に引数を使用してください:ember build --environment=development --subenv=staging Ember-cliはサポートされていない引数についての警告を出力しますが、すべて正常に動作します。

この方法を使用すると、必要な数のサーバーを用意し、それらのいずれかに開発/運用バージョンのアプリケーションを構築できます。あなたのエラーについては

、私はそれを原因かわからないんだけど、おそらくあなたはparamはstagingに等しい場合、ご使用の環境を設定するために何かhere

-1

編集しconfig/environment.jsを見つけることができます。例えば:

` 機能(環境){

var ENV = { 
    // SET ENV properties 
    APP: { 
     // Here you can pass flags/options to your application instance 
     // when it is created 
    }, 
    contentSecurityPolicy: { 
     // Configure security 
    } 
}; 

if (environment === 'production') { 
    // Set production values 
} 

if (environment === 'staging') { 
    // Set staging values 
} 

if (environment === 'development') { 
    // Set staging values 
} 

if (environment === 'test') { 
    // Set testing values 
} 

return ENV; 

}。

`` `

し、次のコマンドを使用したバージョンを構築しようとしている:

ember build --environment="staging"

1

これは混乱を招くことが、何あなたが望むことはない環境であるかもしれません。 デプロイメントターゲットが必要です。この2つの違いについてのブログ記事はDo not confuse environment for deploy targetです。

環境は、コードをどのようにして縮小し、資産に指紋を付け、特定のデバッグ機能を有効/無効にするかなどです。で、コードを展開する場所、使用、またはそのようなもの。

あなたはtestまたはdevelopmentと呼ばれるサーバを持つことが起こるかもしれないが、これらのサーバにデプロイするとき、あなたは常にproduction、ないtestまたはdevelopmentに環境を設定する必要があります。

複数のサーバー(デプロイターゲット)をサポートするために、env varsを使用します。ような何か:

DEPLOY_TARGET=development ember build --environment=production 
DEPLOY_TARGET=test ember build --environment=production 
DEPLOY_TARGET=staging ember build --environment=production 
DEPLOY_TARGET=production ember build --environment=production 

そして、あなたのember-cli-deploy.jsで、あなたは、単にprocess.env.DEPLOY_TARGETを通じて値にアクセスし、次のように:あなただけember deploy stagingを入力することができるように

const deployTarget = process.env.DEPLOY_TARGET; 
if (deployTarget === 'development') { 
    // ... 
} else if (deployTarget === 'test') { 
    // ... 
} else if (deployTarget === 'staging') { 
    // ... 
} else if (deployTarget === 'production') { 
    // ... 
} 

私は、このプロセスを自動化するember-cli-deployアドオンを使用することをお勧めしますstagingのビルドを作成して展開します。

関連する問題