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

时间:2016-01-11 14:00:48

标签: typescript visual-studio-code

之前有人问过这个问题,如果有的话,我很抱歉重复的帖子只是将我重定向到另一个帖子。

是否可以将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"
}

6 个答案:

答案 0 :(得分:3)

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

"args": []

确保你也确实有tsconfig.json文件。 这成功编译了所有.ts文件。

答案 1 :(得分:1)

对于你的任务来说可能有点过分,但对于我的项目,我使用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中添加相应的dev依赖项:

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

希望这有帮助。

答案 2 :(得分:0)

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

它将输出包含所有已转换代码的单个文件。

我希望这会有所帮助

答案 3 :(得分:0)

正如@mishap所说,但他的回答是缺少的,那就是#" args"像这样:

"args": [ ]

而不是:

"args": []

当这些args被传递给执行 tsc 的cmd /终端时,重要的是有一个空格" "在" args"的任务.json。

答案 4 :(得分:0)

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

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

您可以使用一堆预先定义的变量,这些变量将在运行时被替换。此页面提供了更多信息:https://code.visualstudio.com/docs/editor/tasks#_variable-substitution

答案 5 :(得分:0)

--==========================
  - 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)