如何配置 VS Code 的 "tasks.json" 来构建所有 .ts 文件

How to configure VS Code's "tasks.json" to build all .ts files

可能之前有人问过这个问题,我很抱歉重复了 post 只是将我重定向到另一个线程。

是否可以配置 VS Code 的 "tasks.json" 编译文件夹 中的所有 .ts 文件。我知道我可以像这样手动将路径添加到 .ts 文件:

"args": [ HelloWorld.ts ],

它确实编译了 HelloWorld.ts 但我不知道如何设置 tasks.json 文件夹中的 all.ts 文件被编译。

我看过一些教程,它们都建议简单地删除 "HelloWorld.ts",但这不起作用,因为根本没有编译任何 .ts 文件。

这是我在 VS Code 中的整个 tasks.json 文件:

{
    "version": "0.1.0",

    // The command is tsc. Assumes that tsc has been installed using npm install -g typescript
    "command": "tsc",

    // The command is a shell script
    "isShellCommand": true,

    // Show the output window only if unrecognized errors occur.
    "showOutput": "always",

    // args is the HelloWorld program to compile.
    "args": [ "HelloWorld.ts" ],

    // use the standard tsc problem matcher to find compile problems
    // in the output.
    "problemMatcher": "$tsc"
}

创建一个 _all.ts 文件,添加您要编译的所有文件的引用并将其传递给 args 参数。

它将输出一个包含所有转译代码的文件。

希望对您有所帮助

这对您的任务来说可能有点矫枉过正,但对于我的项目,我使用 gulp 并且得到了 VSCode 的良好支持。

首先,您应该为您的项目设置 tsconfig.json,您可以在其中排除不需要的文件。我发现排除不需要的内容比包含需要的内容更容易。对于大型项目尤其如此。

{ 
     "compilerOptions": { 
         "emitDecoratorMetadata": true, 
         "experimentalDecorators": true,
         "module": "commonjs", 
         "target": "es5",
         "sourceMap": true,
         "outDir": "dist",
         "declaration": true
     },
     "exclude": [
         "node_modules",
         "dist",
         ".vscode",
         "docs"
     ]
}

这就是您的 tasks.json 的样子:

{
    "version": "0.1.0",
    "command": "node",
    "windows": {
        "command": "node.exe"
    },
    "isShellCommand": true,
    "tasks": [
        {
            "taskName": "build-debug",
            "args": ["${workspaceRoot}/node_modules/gulp/bin/gulp.js", "build-debug"],
            "isBuildCommand": true,
            "suppressTaskName": true,
            "problemMatcher": [
                "$tsc"
            ]
        }
    ]
}

注意我这里使用的是本地安装的gulp。

这里是示例 gulpfile.js:

"use strict";

var gulp = require('gulp');
var ts = require('gulp-typescript');
var merge = require('merge2');
var sourcemaps = require('gulp-sourcemaps');
var del = require('del');

var tsProject = ts.createProject('tsconfig.json');

gulp.task('build-debug', function() {
    del.sync("dist");

    var tsResult = tsProject.src()
        .pipe(sourcemaps.init())   
    .pipe(ts(tsProject));

    return merge([
        //Build typescript to dist folder 
        // tsResult.dts
        //     .pipe(gulp.dest('dist')),
        tsResult.js
            .pipe(sourcemaps.write("./", { sourceRoot: __dirname }))
            .pipe(gulp.dest('dist')),
});

并且不要忘记将相应的开发依赖项添加到您的 package.json:

  "devDependencies": {
    "gulp": "latest",
    "gulp-typescript": "latest",
    "gulp-sourcemaps": "latest",
    "merge2": "latest",
    "del": "latest"
  } 

希望对您有所帮助。

在您的 tasks.json 中删除 "args" 键的方括号内容:

"args": []

确保您也有 tsconfig.json 文件。 这为我成功编译了所有 .ts 文件。

正如@mishap 所说,但他的回答缺少的是 "args" 应该有一个空的 space,如下所示:

"args": [ ]

而不是:

"args": []

因为这些参数被传递给 cmd/terminal 执行 tsc 重要的是 space 在 "args" 的 tasks.json.

这对我有用,而不是完全删除 args。

"args": ["-p", "${workspaceRoot}"]

有许多预定义变量可供您使用,它们将在运行时被替换。此页面以获取更多信息:https://code.visualstudio.com/docs/editor/tasks#_variable-substitution

--==========================
  - VS Code - Setup TypeScript Compiler 
  - source : https://code.visualstudio.com/Docs/languages/typescript
--==========================
1/ create a file "tsconfig.json"

        {
            "compilerOptions": {
                "target": "es5",
                "module": "commonjs",
                "sourceMap": true
            }
        }

2/ Create tasks.json : 
    - Ctrl+Shift+P ==> Configure Task Runner
    - Select TypeScript - tsconfig.json.
    {
        // See http://go.microsoft.com/fwlink/?LinkId=733558
        // for the documentation about the tasks.json format
        "version": "0.1.0",
        "command": "tsc",
        "isShellCommand": true,
        "args": ["-p", "."],
        "showOutput": "silent",
        "problemMatcher": "$tsc"
    }

3/ Run the Build Task : Ctrl+Shift+B (Run Build Task)