2012-10-02 10 views
35

TypeScript è progettato per progetti JavaScripty su larga scala che in genere consistono in più file prodotti internamente insieme a librerie prodotte esternamente. In che modo il compilatore TypeScript (tsc) si aspetta di fornirgli il set completo di file che compongono un progetto?Come posso passare più file sorgente al compilatore TypeScript?

+1

Non è ancora possibile rispondere alla mia domanda, quindi per ottenere il lancio, ci sono almeno due modi in cui TSC può venire a conoscenza dei riferimenti: 1. Aggiungere un commento a tripla barra contenente un elemento di riferimento al cima di a.ts file sorgente in questo modo: /// < riferimento path = "node.d.ts"/> 2. passare l'opzione "--reference" sulla riga di comando come questo: TSC --reference nodo .d.ts server.ts – CCoder

+0

Un'app che ho scritto On the Fly, all'indirizzo http://onthefly.codeplex.com/ consente di passare qualsiasi numero di file al compilatore TypeScript - e si può compilare/compilare tutto questi file in una sola volta, con un semplice clic di un pulsante. Non sto "pubblicizzando" o "trollando" facendo sapere a quante più persone possibile che ci sia una piccola app che aiuta ad alleviare il dolore, dal momento che la compilazione automatica con TypeScript ha dimostrato di essere problematica per molti. – Arrow

risposta

24

TSC può compilare più sorgenti in sequenza se basta dare i nomi in ordine:

tsc foo.ts bar.ts 

È inoltre possibile passare un file di testo contenente un elenco di file e argomenti della riga di comando da un file di testo utilizzando il @ argomento della riga di comando.

tsc @compile.txt 

e la compile.txt potrebbe assomigliare a questo:

--module amd 
foo.ts 
bar.ts 

Si noti inoltre che se da riferimenti ai file un altro tramite un import, tsc sarà capire automaticamente senza dover elencare esplicitamente il file da cui dipende.

+1

Durante la compilazione di un singolo file, dattiloscritto genera il codice generato da altri file di riferimento. Passando tutti i file al compilatore, non lo fa. (Esiste un argomento della riga di comando per impedire che includa riferimenti durante la compilazione di un singolo file?) –

+3

In realtà, include solo il codice di riferimento quando si utilizza il parametro --out. Quindi c'è un modo per cambiare il nome file di output senza modificare il comportamento? –

+0

possiamo ottenere un nome file diverso come file di output dall'input dopo la compilazione? se sì, allora, come suggerire qualsiasi metodo Voglio convertire .ts in file .js. –

39
dir *.ts /b /s > ts-files.txt 
tsc @ts-files.txt 
del ts-files.txt 

Questo compilerà tutti *.ts i file nella directory di lavoro e le sue sottodirectory. Se non si desidera includere sottodirectory, è sufficiente rimuovere la parte /s dalla prima riga.

Si noti che è anche possibile aggiungere altri argomenti alla riga tsc. Ecco quello che sto usando ora uno dei miei progetti:

tsc @ts-files.txt --out ..\output/deerchao.web.js --removeComments 
+0

Ho provato questo e non ho potuto farlo funzionare. Qualche idea? https://stackoverflow.com/questions/25199866/error-when-compiling-multiple-typescript-files – homaxto

+1

Funziona bene. Eseguo la soluzione e ho il seguente problema: "errore TS5037: impossibile compilare moduli esterni a meno che non venga fornito il flag" --module "." Questo problema è stato risolto facilmente aggiungendo il modulo in questo modo: tsc @ ts-files.txt --module "commonjs" – Aebsubis

2

Nel caso in cui qualcuno ha bisogno di questo per Mac OS X:

find . -name "*.ts" -type f >ts-files.txt 
/usr/local/bin/tsc @ts-files.txt --module CommonJS --out ./Deploy/ServerMain.js --removeComments 
rm ts-files.txt 
1

Con dattiloscritto 1.5 (beta, ma la versione finale dovrebbe essere lì a breve), è possibile creare un file tsconfig.json per configurare il compilatore TypeScript ei file da compilare (tra le altre cose). Vedere la mia risposta laggiù: How to watch and compile all TypeScript sources?

0

O semplicemente:

find ./my/path/ -name \"*.ts\" -type f | tsc 
0

Se qualcuno ha bisogno di più file pretranspiled prima della compilazione effettiva del progetto, utilizzare un TSconfig separata con l'opzione del compilatore --project.

Compila un progetto con un file di configurazione valido. L'argomento può essere un percorso di file per un file di configurazione JSON valido o un percorso di directory in una directory contenente un file tsconfig.json. Vedere la documentazione di tsconfig.json per ulteriori dettagli.

Un caso di utilizzo sarebbe la necessità dei file JS risultanti utilizzati successivamente negli argomenti della riga di comando per gli script di app ionici.

+0

genera l'errore TS5042: l'opzione 'progetto' non può essere combinata con i file di origine su una riga di comando. prova a usare l'opzione --project o -p quando specifichi i file da compilare. – vikas

Problemi correlati