Soy bastante nuevo en TypeScript, y ahora mismo tengo archivos .ts en varios lugares a través de la estructura de mi proyecto:
app/
|-scripts/
|-app.ts
|
|-classes/
| |-classA.ts
| |-classB.ts
|
|-controllers/
| |-controllerA.ts
| |-controllerB.ts
|
|-otherStuff/
|-otherstuffA.ts
En este momento, cuando se compilan mis archivos, se compilan en el mismo directorio en el que están los archivos .ts:
app/
|-scripts/
|-app.ts
|-app.js
|
|-classes/
| |-classA.ts
| |-classB.ts
| |-classA.js
| |-classB.js
|
|-controllers/
| |-controllerA.ts
| |-controllerB.ts
| |-controllerA.js
| |-controllerB.js
|
|-otherStuff/
|-otherstuffA.ts
|-otherStuffA.js
Si bien me gusta la forma en que los archivos .js mantienen la misma estructura de directorio que los archivos .ts, no quiero rastrear los archivos .js en mi VCS, así que me gustaría mantener todos mis archivos JavaScript en un árbol de directorio separado (que luego puedo agregar a .gitignore), así:
app/
|-scripts/
| |-app.ts
| |
| |-classes/
| | |-classA.ts
| | |-classB.ts
| |
| |-controllers/
| | |-controllerA.ts
| | |-controllerB.ts
| |
| |-otherStuff/
| |-otherstuffA.ts
|
|-js/
|-app.js
|
|-classes/
| |-classA.js
| |-classB.js
|
|-controllers/
| |-controllerA.js
| |-controllerB.js
|
|-otherStuff/
|-otherstuffA.js
¿Existe una configuración u opción en algún lugar que le diga al compilador de TypeScript que haga esto? Además, no estoy seguro de si es relevante, pero estoy usando WebStorm.
javascript
typescript
tsc
TheGuyWithTheFace
fuente
fuente
Respuestas:
Use la opción
--outDir
en tsc (configurada dentro de File Watcher en IntelliJ)De la documentación de la línea de comandos
--outDir DIRECTORY Redirect output structure to the directory.
Editar
Desde TypeScript 1.5, esto también se puede configurar en el
tsconfig.json
archivo:fuente
--rootDir
bandera para pasar una carpeta raíz común al transpilador. Esto evita que encuentre una carpeta raíz común.O agregue
"outDir": "build"
al archivo tsconfig.jsonfuente
"outDir": "build"
va en el"compilerOptions"
objeto de su tsconfig.json, no como una propiedad de nivel superior.Aunque estas respuestas son correctas, debe considerar si realmente solo desea ocultar sus archivos .js de su IDE .
En Visual Studio Code, vaya a
File > Preferences > Settings
o su.vscode\settings.json
archivo e ingrese:Lo anterior oculta los archivos .js donde existe un archivo .ts correspondiente.
fuente
__dirname
. (Por ejemplo, un.graphql
archivo de esquema)Si desea mapear la estructura del directorio de la carpeta app / scripts en js, le sugiero que use la siguiente configuración para su observador de archivos:
fuente
Usuarios de Intellij, compile TypeScript en múltiples directorios de salida
Para los usuarios de Intellij, esto puede resultar útil. Así fue como logré que esto funcionara usando el compilador de TypeScript integrado.
Información medioambiental
Ejemplo de estructura de directorio
Configuración de Intellij
C:\yourUserName\AppData\Roaming\npm\node_modules\typescript\lib
-m amd -t ES6 -outDir E:\myapp\js
E:\myapp\ts\main.ts
Si esto no está marcado, todos sus archivos intentarán salir a su ruta outDir.fuente
Configuré package.json así para que al escribir
npm run start
todo salga abuild
. Los archivos de origen se guardan en formatosrc
. El archivo de salida está especificado por--outDir build
.Puede excluir su directorio de compilación en tsconfig.json, aunque probablemente no sea necesario, ya que solo hay JS allí:
fuente
Estoy usando Atom con la extensión atom-typescript y mi tsconfig.json se ve así:
fuente
Con respecto a Grunt, actualmente para guardar la estructura del proyecto de la carpeta de desarrollo en producción y no obtener un resultado inesperado después de que se hayan compilado los archivos, consulte la opción:
Vea la opción rootDir en los documentos oficiales de grunt-ts.
Espero que ayude a alguien si se atasca y obtiene un resultado extraño en la producción.
fuente