node.js - repl - node js ts node
Anulando `tsconfig.json` para ts-node en mocha (3)
¿Es posible anular qué tsconfig.json
ts-node usa cuando se llama desde mocha?
Mi tsconfig.json
principal contiene "module": "es2015"
, pero quiero usar "module": "commonjs"
para ts-node.
Probé esto
mocha --compilers ts:ts-node/register,tsx:ts-node/register /
--compilerOptions ''{"module":"commonjs"}'' /
--require ts-node/register test/**/*.spec.ts*
Pero no funcionó:
SyntaxError: Unexpected token import
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:387:25)
at Module.m._compile (/usr/lib/node_modules/ts-node/src/index.ts:406:23)
at Module._extensions..js (module.js:422:10)
at Object.require.extensions.(anonymous function) [as .tsx] (/usr/lib/node_modules/ts-node/src/index.ts:409:12)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Module.require (module.js:367:17)
at require (internal/module.js:16:19)
at /usr/lib/node_modules/mocha/lib/mocha.js:222:27
at Array.forEach (native)
at Mocha.loadFiles (/usr/lib/node_modules/mocha/lib/mocha.js:219:14)
at Mocha.run (/usr/lib/node_modules/mocha/lib/mocha.js:487:10)
at Object.<anonymous> (/usr/lib/node_modules/mocha/bin/_mocha:458:18)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:146:18)
at node.js:404:3
En package.json - sección de scripts:
"test": "TS_NODE_PROJECT=src mocha"
recoge mi tsconfig.json en el directorio src de mi proyecto, anulando el tsconfig.json predeterminado.
OP puede lograr lo mismo usando test en lugar de src
--compilerOptions
no funcionará.
Lo que debe hacer es personalizar la forma en que registra ts-node
. Mi caso era un poco diferente del tuyo, quería que usara test/tsconfig.json
, que contenía la configuración que necesitaba mi código de prueba. Si acabo de usar --require ts-node/register
, estaba usando una configuración predeterminada que no contenía la configuración necesaria para ejecutar mis pruebas.
Lo que hice fue:
Crear un archivo de
test/tshook.js
. Contiene:require("ts-node").register({ project: "test/tsconfig.json", });
Edité mi
test/mocha.opts
para tener:--require test/tshook.js test/**/*.ts
Esto debería pasar la configuración deseada a ts-node
:
require("ts-node").register({
compilerOptions: {
module: "commonjs",
},
});
TS_NODE_COMPILER_OPTIONS
establecer la configuración a través de la variable de entorno TS_NODE_COMPILER_OPTIONS
Código de ejemplo en una máquina unix:
TS_NODE_COMPILER_OPTIONS=''{"module":"commonjs"}'' /
mocha --require ts-node/register ''test/**/*.spec.{ts,tsx}''
Explicación extraída de la documentación del repositorio.
CLI y opciones programáticas
Variable de entorno denotada entre paréntesis.
-
--typeCheck
Habilita la verificación de tipo para TypeScript (TS_NODE_TYPE_CHECK
) -
--cacheDirectory
Configure el directorio de caché del archivo de salida (TS_NODE_CACHE_DIRECTORY
) -
-I, --ignore [pattern]
Anula los patrones de ruta para omitir la compilación (TS_NODE_IGNORE
) -
-P, --project [path]
Ruta al archivo de proyecto JSON de TypeScript (TS_NODE_PROJECT
) -
-C, --compiler [name]
Especifique un compilador de TypeScript personalizado (TS_NODE_COMPILER
) -
-D, --ignoreDiagnostics [code]
Ignore las advertencias de TypeScript por código de diagnóstico (TS_NODE_IGNORE_DIAGNOSTICS
) -
-O, --compilerOptions [opts]
objeto JSON para fusionar con las opciones del compilador (TS_NODE_COMPILER_OPTIONS
) -
--no-cache
Deshabilita la--no-cache
local del nodo de TypeScript (TS_NODE_CACHE
) -
--skip-project
Omitir resolución de configuración y carga del proyecto (TS_NODE_SKIP_PROJECT
) -
--skip-ignore
Omitir ignorar cheques (TS_NODE_SKIP_IGNORE
)