如何在 Ember 中为自定义构建环境指定压缩

How to specify compression for custom build environment in Ember

如何为自定义环境的文件名指定压缩、捆绑和添加失效散列?

生产环境会自动压缩和合并文件,并为文件名添加失效哈希。 IE。每当我使用 ember build --environment=production 触发 config/environment.js

中的 if (environment === 'production'){} 案例时

但我想创建和构建一个 QA 环境,该环境还可以压缩文件并将无效散列添加到文件名中。 IE。以下内容还应生成以无效哈希命名的压缩文件(输出与 production 输出相同,但 QA 变量除外,如 URL):

config/environment.js

if (environment === `qa`){
    ENV.somevar = 'qa-value'
}

命令

ember build --environment=qa

这是在您项目的 ember-cli-build.js 文件中配置的。默认情况下,指纹识别仅在生产中启用 (app.env === 'production')。这可以通过 fingerprint.enabled 选项更改。这同样适用于 ember-cli-uglify 的 JavaScript 缩小和 minifyCSS 选项。根据需要配置这些选项:

'use strict';

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

module.exports = function(defaults) {
  let env = EmberApp.env();
  let isProductionLike = ['production', 'qa'].includes(env);
  let app = new EmberApp({
    'ember-cli-uglify': {
      enabled: isProductionLike
    },
    fingerprint: {
      enabled: isProductionLike
    },
    minifyCSS: {
      enabled: isProductionLike
    },
    sourcemaps: {
      enabled: !isProductionLike
    }
  });

  return app.toTree();
};

ember-cli-uglify 选项在 ember-cli-uglify 1.x 中被命名为 minifyJS。该插件已在 ember-cli 2.16 的默认蓝图中更新。如果您仍在使用 ember-cli-uglify@1.x,请相应地更改选项名称。在撰写此答案时,ember-cli 文档尚未反映出这一重大变化。它被介绍了here. Also note that there is an open issue,所以它可能会在未来再次改变。

asset compilation chapter of ember-cli docs 中提供了更多详细信息和选项。