asp.net - ¿Por qué excluir wwwroot de tsconfig?
Estoy trabajando con un proyecto de TypeScript usando una plantilla de ASP.NET 5 en VS.NET 2015. Agregué un archivo scripts/tsconfig.json y contiene la siguiente sección exclude por defecto:
"exclude": [
"node_modules",
"wwwroot"
]
Sin embargo, al revisar tutoriales, también he visto que debería configurar la salida de compilación de TypeScript al siguiente directorio:
"outDir": "../wwwroot"
Indicando la definición de exclude de la wiki oficial de TypeScript:
Si se especifica la propiedad "exclude", el compilador incluye todos los archivos de TypeScript (*.ts o *.tsx) en el directorio contenedor y subdirectorios, excepto aquellos archivos o carpetas que estén excluidos.
Mi confusión es que, dado que el archivo tsconfig.json aplica configuraciones al proyecto virtual de TypeScript dentro de la carpeta donde se encuentra, y el mío está dentro de la carpeta /scripts, ¿todavía necesito esa configuración? ¿Por qué excluir wwwroot y por qué se agregó esa configuración automáticamente? No planeo tener una carpeta wwwroot dentro de mi carpeta /scripts, así que estoy tratando de entender por qué debería ser excluida. ¿O se agrega por defecto dado que podría haber agregado mi archivo tsconfig.json a la raíz de mi proyecto y en ese caso uno querría excluir la carpeta wwwroot?
Respuesta #1
El directorio wwwroot es para los archivos de salida. En un proyecto web típico de ASP.NET 5, tus archivos *.js/*.css se compilarán a partir de *.ts y *.less/*.sass. Estos archivos fuente son parte de tu proyecto y del código en el que trabajas.
Al compilar, cambiar o publicar, se compila en, por ejemplo, *.js, se fusionan en un solo archivo y se minifican (también conocido como uglify), luego se copian a una carpeta en wwwroot así como todos los archivos estáticos de tu proyecto web.
Con exclude: "wwwroot" indicas que no se busque allí archivos *.less/*.sass/*.ts ya que ninguno de estos archivos debería ubicarse nunca allí.
Respuesta #2
El compilador de TypeScript busca archivos de TypeScript (input) y los compila en cada carpeta. Con el exclude le indicas al compilador que no busque en la carpeta wwwroot archivos de TypeScript (input). El outDir le indica al compilador de TypeScript que output los archivos compilados en wwwroot. Tus archivos compilados luego pueden ser servidos al cliente.