2015-12-26 15 views
29

Sto usando TS 1.7 e sto cercando di compilare il mio progetto in un unico file che sarò in grado di includere nel mio file html.Typescript compile su singolo file

mia struttura del progetto si presenta così:

-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 

mio file TSconfig è:

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

Quando costruisco il mio progetto mi aspetto il file build.js di essere un unico grande file compilato dal mio fonte. Ma il file build.js è vuoto e ottengo tutti i miei file compilati su file js.

Ognuno dei miei TS file sembrano un po 'come questo

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

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

Che cosa sto facendo di sbagliato?

risposta

29

Questo sarà implementato in TypeSript 1.8. Con questa versione l'opzione OUTFILE funziona quando modulo è AMD o sistema.

A questo punto la funzione è disponibile nella versione di sviluppo di Typescript. Per installare quella corsa:

$ npm install -g [email protected] 

Per le versioni precedenti, anche se non è evidente il moduloei outfile opzioni non possono lavorare insieme.

È possibile controllare il problema this per ulteriori dettagli.


Se vuoi mostrare un singolo file con le versioni inferiori a 1.8, non è possibile utilizzare l'opzione del modulo in tsconfig.json. Invece devi creare spazi dei nomi usando la parola chiave del modulo.

tuo tsconfig.json file di dovrebbe essere simile a questo:

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

anche i propri file TS dovrebbe assomigliare a questa:

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

E invece di utilizzare l'istruzione import dovrai fare riferimento alle importazioni per namespace.

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

Il problema che lei ha ricordato sembrava essere risolto, anche https://github.com/Microsoft/TypeScript/wiki/Compiler-Options suggerisce che la bandiera --outfile per essere utilizzato con la bandiera --module. –

+0

in effetti, ma non sembra funzionare. :(Forse ne farai un problema su github? – toskv

+0

btw, le risoluzioni dei problemi su github non sembrano indicare eventuali modifiche effettive al codice base, si chiudono sempre con questo comportamento predefinito. – toskv

Problemi correlati