2016-05-28 3 views
1

Я создаю приложение Angular 2 и свяжу его с SystemJS/JSPM.Angular 2 TypeScript: enableProdMode при наборе с 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.

Что было бы лучшим способом сделать это?

ответ

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 непосредственно перед тем, как построить пакет, и bac k до dev после этого, используя jq.

Смежные вопросы