2012-10-02 32 views
35

TypeScript está diseñado para proyectos JavaScripty a gran escala que generalmente consisten en varios archivos producidos internamente junto con bibliotecas producidas externamente. ¿Cómo espera el compilador de TypeScript (tsc) que le proporcione el conjunto completo de archivos que componen un proyecto?¿Cómo puedo pasar múltiples archivos fuente al compilador de TypeScript?

+1

Todavía no puedo responder mi propia pregunta, así que para ponerme al día, hay al menos dos formas en que TSC puede tener conocimiento de las referencias: 1. Agregue un comentario triple-slash que contenga un elemento de referencia al arriba de a.ts archivo fuente de la siguiente manera: referencia /// < path = "node.d.ts"/> 2. pasar la opción "--reference" en la línea de comando como este: TSC --reference nodo .d.ts server.ts – CCoder

+0

Una aplicación que escribí On the Fly, en http://onthefly.codeplex.com/ le permite pasar cualquier cantidad de archivos al compilador de TypeScript, y puede compilar/compilar todos estos archivos a la vez, con solo un clic de un botón. No estoy "publicitando" o "trolling" simplemente dejando que la mayor cantidad de gente sepa que existe una pequeña aplicación que ayuda a aliviar el dolor, ya que la compilación automática con TypeScript ha demostrado ser problemática para muchos. – Arrow

Respuesta

24

TSC puede compilar múltiples fuentes en secuencia si acaba de dar los nombres en orden:

tsc foo.ts bar.ts 

También se puede pasar un archivo de texto que contiene una lista de archivos y los argumentos de línea de comandos desde un archivo de texto con el @ argumento de línea de comando.

tsc @compile.txt 

y la compile.txt podría tener este aspecto:

--module amd 
foo.ts 
bar.ts 

También tenga en cuenta que si en las referencias de archivos otra a través de un import, tsc le calculará automáticamente que fuera sin tener que enumerar explícitamente la archivo de lo que depende.

+1

Al compilar un único archivo, el mecanografiado arrojará el código generado de otros archivos referenciados. Al pasar todos los archivos al compilador, no hace esto. (¿Existe un argumento de línea de comando para evitar que incluya referencias al compilar un solo archivo?) –

+3

En realidad, solo incluye código de referencia cuando se utiliza el parámetro --out. Entonces, ¿hay alguna manera de cambiar el nombre del archivo de salida sin cambiar el comportamiento? –

+0

¿Podemos obtener un nombre de archivo diferente como archivo de salida de entrada después de la compilación? En caso afirmativo, ¿cómo sugiere algún método? Quiero convertir archivos .ts a .js. –

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

Esto compilará todos *.ts archivos en el directorio de trabajo y sus subdirectorios. Si no desea incluir directorios secundarios, simplemente elimine la parte /s de la primera línea.

Tenga en cuenta que también puede agregar otros argumentos a la línea tsc. Esto es lo que estoy usando ahora para uno de mis proyectos:

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

Probé esto y no pude hacerlo funcionar. ¿Algunas ideas? https://stackoverflow.com/questions/25199866/error-when-compiling-multiple-typescript-files – homaxto

+1

Funciona bien. Ejecuto esa solución y tuve el siguiente problema: "error TS5037: no se pueden compilar módulos externos a menos que se proporcione el indicador '--module'". Eso se solucionó fácilmente al agregar el módulo de esta manera: tsc @ ts-files.txt --module "commonjs" – Aebsubis

2

En caso de que alguien necesita esto para 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 mecanografiado 1.5 (beta pero la versión final debería estar allí pronto), puede crear un archivo tsconfig.json para configurar el compilador de TypeScript y los archivos para compilar (entre otras cosas). Véase mi respuesta por allí: How to watch and compile all TypeScript sources?

0

O simplemente:

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

Si alguien necesita varios archivos pretranspiled antes de la compilación real del proyecto, utilice un TSconfig separada con la opción de compilador --project.

Recopila un proyecto con un archivo de configuración válido. El argumento puede ser ser una ruta de archivo a un archivo de configuración JSON válido, o una ruta de directorio a un directorio que contiene un archivo tsconfig.json. Consulte la documentación de tsconfig.json para obtener más detalles.

Un caso de uso sería la necesidad de los archivos JS resultantes utilizados posteriormente en argumentos de línea de comandos para scripts de aplicaciones iónicas.

+0

arroja 'error TS5042: La opción 'proyecto' no se puede mezclar con archivos fuente en una línea de comando. intente utilizar la opción --project o -p cuando especifique los archivos para compilar. – vikas

Cuestiones relacionadas