sourcemap official not lib esmoduleinterop es7 compile but allowjs typescript visual-studio-code tsconfig

typescript - official - Configurando tsconfig con la carpeta spec/test



typescript strict mode (3)

Acabé definiendo varios archivos de configuración y el uso se extends para simplificarlos.

Digamos que tengo dos archivos: tsconfig.json y tsconfig.build.json

// tsconfig.json { ... "exclude": [...] } // tsconfig.build.json { ... "files": [ "typings/index.d.ts", "src/index.ts" ] }

De esta manera, puedo tener un control preciso sobre qué compilar (usando tsc -p tsconfig.build.json ) y qué maneja el ts language service (IDE).

ACTUALIZACIÓN: ahora que mis proyectos crecen, terminé teniendo más archivos de configuración. Utilizo la función "extender" que ahora está disponible en TypeScript:

// tsconfig.base.json { // your common settings. Mostly "compilerOptions". // Do not include "files" and "include" here, // let individual config handles that. // You can use "exclude" here, but with "include", // It''s pretty much not necessary. } // tsconfig.json { // This is used by `ts language service` and testing. // Includes source and test files. "extends": "./tsconfig.base.json", "atom": { ... }, "compilerOptions": { // I set outDir to place all test build in one place, // and avoid accidentally running `tsc` littering test build to my `src` folder. "outDir": "out/spec" } "include": [ ... ] } // tsconfig.commonjs.json or tsconfig.systemjs.json or tsconfig.global.json etc { "extends": "./tsconfig.base.json", "compilerOptions": { // for some build this does not apply "declaration": true/false, "outDir": "dist/<cjs, sys, global, etc>", "sourceRoot": "..." }, // Only point to typings and the start of your source, e.g. `src/index.ts` "files": [ ... ], "include": [ ... ] }

Digamos que pongo mi código bajo src y pruebas bajo spec :

+ spec + --- classA.spec.ts + src + --- classA.ts + --- classB.ts + --- index.ts + tsconfig.json

Sólo quiero transpilar src a la carpeta dist . Dado que index.ts es el punto de entrada de mi paquete, mi tsconfig.json aspecto:

{ "compileOptions": { "module": "commonjs" "outDir": "dist" }, "files": { "src/index.ts", "typings/main.d.ts" } }

Sin embargo, este tsconfig.json no incluye los archivos de prueba, por lo que no pude resolver las dependencias en ellos.

Por otro lado, si tsconfig.json archivos de prueba en tsconfig.json , también se transpilen a la carpeta dist .

¿Cómo resuelvo este problema?


Creo que no deberías usar la opción ''archivos'' en tu configuración. En su lugar, puedes excluir archivos no deseados y tenerlos así:

{ "compilerOptions": { "module": "commonjs", "outDir": "dist" }, "exclude": [ "node_modules", "dist", "typings/browser.d.ts", "typings/browser/**" ] }

Esto mantendrá su estructura original en la carpeta ''dist'' sin mezclar pruebas y archivos de aplicaciones js:

--dist ----spec -------.... ----src -------....


Esto depende en cierta medida del marco de prueba que esté utilizando, pero me gusta usar ts-node para compilar mis archivos de prueba. Usando mocha, su npm test podría verse así:

"mocha": "mocha test/ --compilers ts:ts-node/register --recursive"

En su tsconfig.json, asegúrese de eliminar la opción rootDir .

{ "compilerOptions": { "module": "commonjs", "target": "es6", "noImplicitAny": false, "removeComments": true, "sourceMap": true, "outDir": "lib" }, "include": [ "src/**/*.ts" ], "exclude": [ "node_modules", "lib", "typings/**" ] }

Cuando intente ejecutar mecanografiado con rootDir configurado a src o cualquiera que sea la carpeta base para el código de su aplicación, no se permitirá ninguna compilación en un directorio que se encuentre afuera, tales tests . Al utilizar ts-node , puede mantener todo separado por separado sin tener que tener archivos de configuración de TypeScript separados.