2015-10-18 4 views
10

Я понимаю, что я могу скомпилировать свое приложение с tsc my_app.ts --target system, и он будет генерировать файл с системой SystemJS для каждого импортированного модуля, что является удивительным, но он генерирует анонимные (безымянные) функции, поэтому я не могу просто связать их с одним файл.Как скомпилировать приложение Angular2 TypeScript в один файл?

Я думал об этом вопросе «как скомпилировать TypeScript для названных модулей SystemJS», но моя цель - просто скомпилировать мое приложение Angular2 в один файл SystemJS или нет.

+0

См [- outFile] (https://github.com/Microsoft/TypeScript/wiki/Compiler-Options) –

+3

@EricMartinez К сожалению, параметр '--out' /' -outFile' не работает с опцией '--module' (например, если у вас есть импорт) https://github.com/Microsoft/TypeScript/issues/1544 –

+1

Я опубликовал обновленный ответ, так как TypeScript добавил эту функциональность в версии 1.8 –

ответ

10

Опция --outFile работает с опцией --module (для AMD и SystemJS) с TypeScript 1.8, поэтому это можно сделать изначально. Here's the changelog. TypeScript также автоматически вытягивает все зависимости, которые не находятся во внешних модулях, поэтому достаточно всего лишь скомпилировать основной файл приложения.

Если Угловое 2 не переключается от SystemJS, способ связать свое приложение в одном файле должно быть простым, как его компиляции с опциями, как tsc app.ts --target ES5 --module system --experimentalDecorators --moduleResolution node --emitDecoratorMetadata --outFile app.js

После этого должно быть возможным для начальной загрузки приложения что-то вроде:

<script src="/bower_components/system.js/dist/system-register-only.js"></script> 
<script src="/node_modules/angular2/bundles/angular2.dev.js"></script> 
<script src="/app.js"></script> 
<script> 
    System.import('app'); 
</script> 
+0

Не можем ли мы сделать это в файле 'tsconfig.json'? –

+1

@ DannyBullis Вы можете, он работает одинаково. –

4

Для сети:

  1. Используйте машинописи для компиляции в JavaScript.
  2. Используйте browserify на JavaScript, чтобы объединить его в один файл.

Более простой способ сделать это, однако, использовать tsify. Это плагин для браузера, который компилирует TypeScript.

2

Вы должны сказать вам TSC compailer, где поместить ваши JS файлы после компиляции TSC (команда: TSC -w). Два параметра в файле tsconfig.js говорит машинопись compailer поставить все Js из положить в один файл в директории

"outDir":"dist/", 
"outFile": "dist/app.js" 

Моего полным tsconfig.js как ниже

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "system", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": true, 
    "suppressImplicitAnyIndexErrors": true, 
    "outDir":"dist/", 
    "outFile": "dist/app.js" 
    } 
}