簡體   English   中英

如何從 ember-cli-build.js 訪問環境參數

[英]How to access the environment parameter from ember-cli-build.js

當你這樣做時:

ember build --environment="production"

environment參數在config/environment.js可用:

module.exports = function(environment) {
  ...
};

我還需要從ember-cli-build.js訪問環境:

let STATIC_URL = "TODO";  // This depends on the deploy "environment" parameter

module.exports = function(defaults) {
  let app = new EmberApp(defaults, {
    fingerprint: {
      enabled: true,
      prepend: STATIC_URL,
    },
  });

  return app.toTree();
};

如何從ember-cli-build.js訪問環境參數?

在我們的 Brocfile.js(我猜你的叫做 ember-cli-build.js?)我們正在做這樣的事情:

var EmberApp = require('ember-cli/broccoli/ember-app');
var environment = process.env.EMBER_ENV || 'development';
var config = require('./config/environment')(environment);

var app = new EmberApp(/* configuration for the app... */ );
module.exports = app.toTree();

我們分配給環境變量的行是你如何獲得你所在的環境。我們使用 EMBER_ENV 命令行變量,但你可以使用不同的東西。 基本上在我們所有的代碼中,我們都像這樣運行 ember:

EMBER_ENV=production ember-cli start
EMBER_ENV=test ember-cli test

# the next lines use the same 'development' environment
EMBER_ENV=development ember-cli start
ember-cli start

我正在使用 Ember 2.5。 要從 ember-cli-build.js 訪問環境參數,請使用process.env.EMBER_ENV 這是我的 ember-cli-build.js:

let EmberApp = require('ember-cli/lib/broccoli/ember-app');

module.exports = function(defaults) {
  let app = getApp(defaults, process.env.EMBER_ENV);

  // Use `app.import` to add additional libraries to the generated
  // output files.

  return app.toTree();
};

function getApp(defaults, environment) {
  switch(environment) {

    case "production":
      return new EmberApp(defaults, {
        fingerprint: {
          enabled: true
        },
      });

    default:
      return new EmberApp(defaults, {
        fingerprint: {
          enabled: false
        },
      });     

  }
}

編輯
我剛剛認識到您不僅在 app.js 中還需要 ember-cli-build.js 中已經存在的環境,所以這個答案可能不起作用。 無論如何我都會把它貼出來,也許它會有所幫助!

我的配置有點不同,但包括環境是一樣的:

// app.js - I stripped some unrelated stuff
import Ember from 'ember';
import Resolver from 'ember/resolver';

import ENV from 'my-appname/config/environment';

var App;


App = Ember.Application.extend({
  fingerprint: {
     enabled: true,
     prepend: ENV.STATIC_URL,
  },
  modulePrefix: config.modulePrefix,
  podModulePrefix: config.podModulePrefix,
  Resolver: Resolver,
});

export default App;

現在,您可以根據傳遞給的環境更改 environment.js 中的 STATIC_URL:

// config/enviroment.js
module.exports = function(environment) {
    var ENV;
    if(environment==='production') {
        ENV.STATIC_URL='foo';
    }
    return ENV;
}

請注意, config/environment 位於您的dasherized appname 下。

ember-cli-build.js您可以調用EmberApp.env() ,如下所示:

let STATIC_URL = EmberApp.env() === 'development' ? "TODO" : "READY";

module.exports = function(defaults) {
  let app = new EmberApp(defaults, {
    fingerprint: {
      enabled: true,
      prepend: STATIC_URL,
    },
  });

  return app.toTree();
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM