2015-12-26 3 views
29

Я использую TS 1.7, и я пытаюсь скомпилировать мой проект в один большой файл, который я смогу включить в свой html-файл.Машинопись для одного файла

Моя структура проекта выглядит следующим образом:

-build // Build directory 
-src // source root 
--main.ts // my "Main" file that uses the imports my outer files 
--subDirectories with more ts files. 
-package.json 
-tsconfig.json 

мой файл TSconfig является:

{ 
    "compilerOptions": { 
    "module":"amd", 
    "target": "ES5", 
    "removeComments": true, 
    "preserveConstEnums": true, 
    "outDir": "./build", 
    "outFile":"./build/build.js", 
    "sourceRoot": "./src/", 
    "rootDir": "./src/", 
    "sourceMap": true 
    } 
} 

Когда я строю свой проект я ожидаю, что файл build.js будет один большой файл, составленный из моего источник. Но файл build.js ths пуст, и я получаю все мои файлы, скомпилированные o js-файлы.

Каждый из моих TS файлы выглядят немного как этот

import {blabla} from "../../bla/blas"; 

export default class bar implements someThing { 
    private variable : string; 
} 

Что я делаю неправильно?

ответ

29

Это будет реализовано в TypeSript 1.8. С этой версией опция outFile работает, когда модуль: amd или system.

В настоящее время эта функция доступна в версии разработчика Typcript. Чтобы установить этот пробег:

$ npm install -g [email protected] 

Для предыдущих версий, даже если это не очевидно, что модуль и Outfile варианты не могут работать вместе.

Вы можете проверить выпуск this для более подробной информации.


Если вы хотите вывести один файл с версиями ниже 1.8 вы не можете использовать модуль опцию в tsconfig.json. Вместо этого вам нужно создать пространство имен, используя ключевое слово модуля .

Ваш tsconfig.json файл должен выглядеть следующим образом:

{ 
    "compilerOptions": { 
    "target": "ES5", 
    "removeComments": true, 
    "preserveConstEnums": true, 
    "outFile": "./build/build.js", 
    "sourceRoot": "./src/", 
    "rootDir": "./src/", 
    "sourceMap": true 
    } 
} 

Кроме того, ваш TS файлы должны выглядеть следующим образом:

module SomeModule { 
    export class RaceTrack { 
    constructor(private host: Element) { 
     host.appendChild(document.createElement("canvas")); 
    } 
    } 
} 

И вместо того, чтобы использовать оператор импорта вам придется ссылаться на импорт по пространству имен.

window.addEventListener("load", (ev: Event) => { 
    var racetrack = new SomeModule.RaceTrack(document.getElementById("content")); 
}); 
+0

Вопрос, который вы указали, казалось, решен, также https://github.com/Microsoft/TypeScript/wiki/Compiler-Options предполагает, что --outFile флаг, чтобы использоваться с флаг -module. –

+0

действительно, но он, похоже, не работает. :(Может быть, проблема в github? – toskv

+0

btw, разрешения проблем в github, похоже, не указывают на какие-либо фактические изменения в базе кода, они всегда закрываются, поскольку это поведение по умолчанию. – toskv

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