[英]how to configure ember-cli-babel based on environment in 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.