Angular 2 TypeScript:与 JSPM 捆绑时启用 ProdMode

Angular 2 TypeScript: enableProdMode when bundling with JSPM

我正在构建一个 Angular 2 应用程序并将其与 SystemJS/JSPM 捆绑在一起。

在开发过程中,我在 index.html:

中导入应用程序
<script src="jspm_packages/system.js"></script>
<script src="systemjs.config.js"></script>
<script src="systemjs.importapp.js"></script>

我捆绑了:

jspm bundle-sfx app assets/js/myapp.sfx.min.js --minify --no-mangle --skip-source-maps

并且有 index.html 的版本

<script src="assets/js/myapp.sfx.min.js" defer></script>

替换上面三个。

我的 main.ts 起点看起来像:

// CORE IMPORTS
import 'es6-shim';
import 'reflect-metadata';
import 'zone.js';
import 'zone.js/dist/zone';
import 'zone.js/dist/long-stack-trace-zone';
import 'rxjs';

// ADD ALL OPERATORS TO OBSERVABLES
import 'rxjs/Rx';

// APP INITIALISATION
import {bootstrap} from 'angular2/platform/browser';
import {enableProdMode} from 'angular2/core';
import {AppComponent} from './app.component';
import {ROUTER_PROVIDERS} from 'angular2/router';

bootstrap(AppComponent, [
  ROUTER_PROVIDERS
]);

我想做的是仅在与 jspm bundle-sfx 捆绑时调用 enableProdMode()

解决此问题的最佳方法是什么?

我找到了一个解决方案:制作一个外部 JSON 文件,例如environment.json,在与我的应用程序的 main.ts 入口点相同的目录中,包含:

{
  'env': 'dev'
}

然后在 main.ts:

import _environment from './environment.json!json';

if (_environment.env === 'dev') {
  console.log('Running in dev mode.')
}

if (_environment.env === 'prod') {
  console.log('Running in production mode.');
  enableProdMode();
}

这需要安装 SystemJS JSON 插件:

jspm install json

然后,在我的构建脚本中,我在构建包之前将 env 更改为 prod,然后使用 jq 更改回 dev