环境准备
第一步:执行命令创建工程,选择任意目录
mkdir HelloWorld
cd ./HelloWorld
mkdir src
mkdir bin
cnpm install glup
cnpm install browserify vinyl-source-stream tsify
cnpm install typescript
code .
第二步:安装调试插件
目录结构如下:
使用 browserify source tsify 整合ts代码
流程就是写ts代码,使用browserify source tsify整合为一个js文件,再用html启动这个js文件,就是这么easy
新建bin/helloweb.html
<!DOCTYPE html>
<html>
<head><title>TypeScript Hello Web</title></head>
<body>
<script src="js/bundle.js"></script>
</body>
</html>
新建/.vscode/gulpfile.js
var gulp = require("gulp");
var browserify = require("browserify");
var source = require('vinyl-source-stream');
var tsify = require("tsify");
var workSpaceDir = "../";
//使用browserify,转换ts到js,并输出到bin/js目录
gulp.task("compile", function () {
return browserify({
basedir: workSpaceDir,
//是否开启调试,开启后会生成jsmap,方便调试ts源码,但会影响编译速度
debug: true,
entries: ['./src/Main.ts'],
cache: {},
packageCache: {}
})
//使用tsify插件编译ts
.plugin(tsify)
.bundle()
//使用source把输出文件命名为bundle.js
.pipe(source('bundle.js'))
//把bundle.js复制到bin/js目录
.pipe(gulp.dest(workSpaceDir + "/bin/js"));
});
gulp.task("default",gulp.series('compile'))
新建/.vscode/task.json
{
"version": "2.0.0",
"tasks": [
// {
// "type": "typescript",
// "tsconfig": "tsconfig.json",
// "problemMatcher": [
// "$tsc"
// ],
// "group": {
// "kind": "build",
// "isDefault": true
// },
// "label": "tsc: build - tsconfig.json"
// }
{
"label": "compile",
"type": "shell",
"group": "build",
"command": "gulp",
"options": {
"cwd": "${workspaceFolder}/.vscode"
}
},
]
}
新建/.vscode/launch.json
type:就是debugger工具的类型,每一个安装好的调试插件都有自己的类型。比如说node调试工具的type就是node,同理php调试工具的type就是php,我们安装的Debugger for Chrome的type就是chrome。
request:可以理解为调试工具的启动方式,目前官网提供两种,launch和attach,翻译过来就是“启动”和“附加”。就是直接启动或者挂载到进程启动,稍后在插件配置中再详细说明两种方式的差别。
name:给调试器起一个名字,这个可以自己随便写,就是调试器启动以后最下面显示的名字。
preLaunchTask:控制台启动一次调试之前需要执行的任务,可以把任务命令写到 文件夹中的 文件,在调试器启动前会先执行这些任务。
postDebugTask:跟上面差不多,不同的是结束后执行。
runtimeExecutable:指明chrome.exe所在路径(也可以不设置,会自动寻找)
internalConsoleOptions:控制调试台的标签是否在调试过程可见。
port:当调试工具需要挂载到进程的时候,就要配置端口号了。
sourceMaps:是否生成断点映射,它会在你的代码上加上一段base64编码的代码,但光加上这句话是无法完成调试的,还必须指明调试映射路径
sourceMapPathOverrides:指明调试路径,非常重要,如果想在ts中进行调试,务必设置源代码ts路径
trace:生成一个vscode启动工程的日志,输出文件可以在控制台找到文件存放的位置
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "${workspaceFolder}/bin/helloweb.html",
"webRoot": "${workspaceFolder}",
"trace":true,
"sourceMaps": true,
//务必加上
"sourceMapPathOverrides": {
"src/*": "${workspaceRoot}/src/*"
},
"preLaunchTask": "compile"
}
]
}
新建tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"outDir": "bin/js",
"sourceMap": true
},
"exclude": [
"node_modules"
]
}
OK,到此为止一个ts工程就算搭建好了