之前写过一篇文章使用vsc+gulp自动编译ts并重启程序,后来发现这样工作量很大,缺点也很多,比如运行或者调试需要等待编译完成。项目大之后,编译这一步还是需要一定的时间。很难调试测试代码。一般来说,项目用ts,测试代码也应该用ts写,但是很难用编译+sourcemap的方式调试测试代码TS-NODE,可见这些不足都是有根源的,这运行前需要编译。后来发现了一个非常强大的工具ts-node。我们先来看看ts-node的介绍:Node的TypeScript执行环境和REPL。简单的说,它提供了一个TypeScript的运行环境,让我们省去了编译这一步的麻烦。最简单的例子,注册ts-node后,直接加载运行ts文件require('ts-node').register();//这样就可以直接加载运行./ts-code.ts了。..require('./ts-code');TSConfig断点调试,我们需要在tsconfig.json中开启sourceMap{"compilerOptions":{"module":"commonjs","target":"es5","noImplicitAny":true,"outDir":"./dist","sourceMap":true},"include":["src/**/*"],}VSCLaunch.json配置为ts-node注册一个vsc调试任务,修改launch.json文件project,并添加一个新的启动方法ts"//入口文件],"runtimeArgs":["--nolazy","-r","ts-node/register"],"sourceMaps":true,"cwd":"${workspaceRoot}","protocol":"inspector","console":"integratedTerminal","internalConsoleOptions":"neverOpen"}通过这些简单的配置,我们在vsc的调试界面选择Debugbyts-node任务,就可以开始了调试愉快。修改代码后,直接重启服务即可。这里简单介绍一下vscdebug相关的一些快捷键。参考F5-开始调试,继续执行cmd(ctrl)+shift+F5-重启shift+F5-结束调试F9-添加断点F10-步过F11-单步调试shift+f11-步出调用尝试打开当前的ts文件{"name":"CurrentTSFile","type":"node","request":"launch","args":["${relativeFile}"],"runtimeArgs":["--nolazy","-r","ts-node/register"],"sourceMaps":true,"cwd":"${workspaceRoot}","protocol":"inspector","console":"integratedTerminal","internalConsoleOptions":"neverOpen"}Debugmocha测试代码加入launch.json{"name":"DebugCurrentTSTestsFile","type":"node","request":"launch","program":"${workspaceRoot}/node_modules/.bin/_mocha","args":["-r","ts-node/register","${relativeFile}",//调试当前文件"--colors","-t100000"//设置超时时间,因为调试时执行时间长,容易触发超时],"cwd":"${workspaceRoot}","protocol":"inspector"}然后打开一个包含mocha单元测试ts文件的文件,添加断点,运行DebugCurrentTSTestsFile进行断点调试,运行项目中的所有单元测试。建议在package.json中添加测试脚本,如"scripts":{"test":"mocha-rts-node/registersrc/**/*.spec.ts--colors"}然后运行npmtest获取示例demo,这是我写的一个很简单的ts工程,包含了以上所有的配置,希望对你有用。
