当你这样做时:
ember build --environment="production"
environment
中提供了config/environment.js
参数:
module.exports = function(environment) {
...
};
我的应用程序的要求需要依赖于环境prepend
(在ember-cli-build.js
中):
var STATIC_URL = "TODO"; // This depends on the deploy "environment" parameter
module.exports = function(defaults) {
var app = new EmberApp(defaults, {
fingerprint: {
enabled: true,
prepend: STATIC_URL,
},
});
return app.toTree();
};
如何从ember-cli-build.js
?
我的版本:
» ember --version
version: 1.13.13
node: 0.12.2
npm: 2.14.10
os: linux x64
答案 0 :(得分:5)
在我们的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
答案 1 :(得分:5)
我正在使用Ember 2.5。要从ember-cli-build.js访问environment参数,请使用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
},
});
}
}
答案 2 :(得分:0)
修改强>:
我刚认识到你不仅需要在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;
现在您可以根据传递给环境的环境更改enviroment.js中的STATIC_URL:
// config/enviroment.js
module.exports = function(environment) {
var ENV;
if(environment==='production') {
ENV.STATIC_URL='foo';
}
return ENV;
}
请注意,配置/环境位于 dasherized appname。
下答案 3 :(得分:0)
您可以在 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();
};