在mocha中为ts-node覆盖`tsconfig.json`
有没有可能覆盖哪些tsconfig.json
ts节点使用时从摩卡调用?
我的主要tsconfig.json
包含"module": "es2015"
,但我想只使用"module": "commonjs"
ts节点只。
我试过这个
mocha --compilers ts:ts-node/register,tsx:ts-node/register \ --compilerOptions '{"module":"commonjs"}' \ --require ts-node/register test/**/*.spec.ts*
但它没有工作:
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
您需要通过TS_NODE_COMPILER_OPTIONS
环境variables来设置configuration
unix机器上的代码示例:
TS_NODE_COMPILER_OPTIONS='{"module":"commonjs"}' \ mocha --compilers ts:ts-node/register,tsx:ts-node/register \ --compilerOptions \ --require ts-node/register test/**/*.spec.ts*
从存储库文档中提取解释
configuration选项
您可以通过在脚本之前传递选项来设置选项。
ts-node --compiler ntypescript --project src --ignoreWarnings 2304 hello-world.ts
- –project,-Pparsing
tsconfig.json
path(或false
以禁用)(也是process.env.TS_NODE_PROJECT
) - -C编译器,-C使用一个自定义的,需要的TypeScript编译器兼容
typescript@>=1.5.0-alpha
(也是process.env.TS_NODE_COMPILER
) - –ignore为ts-node指定一个正则expression式string数组,以跳过编译为TypeScript(默认为
/node_modules/
,false
以禁用)(也是process.env.TS_NODE_IGNORE
) - –ignoreWarnings,-I设置要忽略的TypeScript诊断代码数组(也是
process.env.TS_NODE_IGNORE_WARNINGS
) - –disableWarnings,-D忽略所有的TypeScript错误(也是
process.env.TS_NODE_DISABLE_WARNINGS
) - –compilerOptions,-O使用JSON设置编译器选项(例如
--compilerOptions '{"target":"es6"}'
)(也是process.env.TS_NODE_COMPILER_OPTIONS
) - –fast,-F使用TypeScript的
transpileModule
模式(没有types检查,但编译速度更快)(也是process.env.TS_NODE_FAST
)–no-cache跳过编译的JavaScriptcaching(也是process.env.TS_NODE_CACHE
)–cache-目录configurationTypeScriptcaching目录(也是process.env.TS_NODE_CACHE_DIRECTORY
)
--compilerOptions
不会'工作。
你需要做的是定制你如何注册ts-node
。 我的情况与你的情况有一点不同,我希望它使用test/tsconfig.json
,它包含我的testing代码所需的设置。 如果我刚刚使用了--require ts-node/register
,它使用的是默认configuration,它不包含运行我的testing所需的设置。
我做的是:
-
创build一个文件
test/tshook.js
。 它包含:require("ts-node").register({ project: "test/tsconfig.json", });
-
我编辑我的
test/mocha.opts
有:--require test/tshook.js test/**/*.ts
这应该会将所需的设置传递给ts-node
:
require("ts-node").register({ compilerOptions: { module: "commonjs", }, });
在package.json – 脚本部分:
"test": "TS_NODE_PROJECT=src mocha"
在我的项目的src目录中选取我的tsconfig.json,覆盖默认的tsconfig.json。
OP可以通过使用test而不是src来实现