Version
- Getting started
- Overview
- Installation
- Quick start
- The Deploy Pipeline
- Overview
- Pipeline Hooks
- The Deployment Context
- Plugins
- Overview
- Plugins
- Plugin Packs
- Writing a plugin
- Configuration
- Overview
- Aliasing Plugins
- dotEnv Support
- Fingerprinting
- Default CLI Options
- Usage
- Overview
- Development Workflow
- Deployment Strategies
- Overview
- The Lightning Strategy
- Examples
- S3 walkthrough
- Lightning Strategy
- Upgrading
- Apps
- Plugins
Configuration Overview
Usage:
App developers use config/deploy.js
to return a function that receives the build environment as a string and returns either a config object or a Promise that fulfills with a config object.
The config object has properties corresponding to the name of the plugin (e.g. for ember-cli-deploy-redis, the property is “redis”).
Examples:
// deploy.js (sync)
module.exports = function(environment){
var ENV = {
};
if (environment === 'production') {
ENV.redis = {
url: process.env.REDIS_URL
}
};
return ENV;
};
// deploy.js (async)
module.exports = function(environment){
var ENV = {
redis: {
}
}
return someAsyncDataRetrieval(environment).then(function(data){
ENV.redis = data.redisUrl;
return ENV;
}
};
Individual config properties can be pure values or functions that receive the context object and return a value.
module.export function(environment){
var ENV = {
redis: {
revisionKey: function(context) {
return context.deployment.tag;
}
}
}
};
Additional Environments
You may wish to have an environment, such as staging, be built as if it where a different environment, like production. You can accomplish this by setting the build.environment
property to the desired environment you wish it to be built as. This will now be the environment that gets passed to the ember asset build, and used in config/environment.js
for example.
module.exports = function(environment){
var ENV = {
};
if (environment === 'qa') {
ENV.build.environment = 'development';
};
if (environment === 'staging') {
ENV.build.environment = 'production';
};
return ENV;
};
If you need to have the original environment that was passed into the ember build
command, this can be obtained under the environment variable of DEPLOY_TARGET
and referenced in any node.js context with process.env.DEPLOY_TARGET
. Those contexts include evaluation of your config/deploy.js
file and your ember-cli-build.js
file.
Advanced Plugin Configuration
By default, all plugins from installed addons will be loaded, and
ordered based on ember-cli’s order of the addons. Developers may have advanced use cases
for specifying the order of plugins, disabling plugins, or configuring a single plugin to
be configured and used twice.
If you want to opt-into this configuration, you can set the plugins
property in your config/deploy.js
file at either the top-level (for global configuration), or under an environment (for per-environment configuration).
plugins: ["s3-assets", "s3-index", "notify-slack"]
Any plugins not included in the list will not have their hooks executed.
It’s also possible to alias plugins.