Angular 2 TypeScript:与JSPM捆绑时的enableProdMode

时间:2016-05-28 20:37:35

标签: typescript angular production-environment systemjs 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
]);

我想要做的只是在我与enableProdMode()捆绑时才拨打jspm bundle-sfx

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案:创建一个外部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