我如何扩展我的自定义环境(和构建),例如,从production“登台”?最终我想做ember build --environment=staging,收获“生产”构建提供的好处和优化,并想提供一些自定义配置。
production
ember build --environment=staging
webghufk1#
这样做可能比实际要难,我希望提供一些说明可以让你明白,所以不推荐这样做。第一步是用你想要的任何定制来修改你的config/environment.js文件。可能看起来像
config/environment.js
if (environment === 'staging') { //set something }
但是你必须处理production自动带来的其他事情。例如,资产的指纹识别只在生产中完成,所以你必须修改emebr-cli-build.js,添加一些指令,使staging像production一样。
emebr-cli-build.js
staging
module.exports = function(defaults) { const env = EmberApp.env() || 'development'; const isProductionLikeBuild = ['production', 'staging'].indexOf(env) > -1; const app = new EmberApp(defaults, { fingerprint: { enabled: isProductionLikeBuild }, sourcemaps: { enabled: isProductionLikeBuild }, minifyCSS: { enabled: isProductionLikeBuild }, minifyJS: { enabled: isProductionLikeBuild }, tests: env.EMBER_CLI_TEST_COMMAND || !isProductionLikeBuild,
可能还有更多的事情是production做的,但那些都是我所知道的。另一个需要查看的地方是config/targets.js,您将在其中找到const isProduction = process.env.EMBER_ENV === 'production';行,它也需要针对新环境进行更改。
config/targets.js
const isProduction = process.env.EMBER_ENV === 'production';
vsnjm48y2#
我建议使用ember-cli-deploy,它本质上允许您创建可以具有不同环境变量的部署“目标”,同时为您提供Ember的生产版本中包含的小型文件、指纹等的好处。
2条答案
按热度按时间webghufk1#
这样做可能比实际要难,我希望提供一些说明可以让你明白,所以不推荐这样做。第一步是用你想要的任何定制来修改你的
config/environment.js
文件。可能看起来像但是你必须处理
production
自动带来的其他事情。例如,资产的指纹识别只在生产中完成,所以你必须修改emebr-cli-build.js
,添加一些指令,使staging
像production
一样。可能还有更多的事情是
production
做的,但那些都是我所知道的。另一个需要查看的地方是
config/targets.js
,您将在其中找到const isProduction = process.env.EMBER_ENV === 'production';
行,它也需要针对新环境进行更改。vsnjm48y2#
我建议使用ember-cli-deploy,它本质上允许您创建可以具有不同环境变量的部署“目标”,同时为您提供Ember的生产版本中包含的小型文件、指纹等的好处。