Как добавить задачу post tsc build, которая копирует файлы?

Как добавить еще одну задачу в VSCode, которая копирует файлы с x на y после задачи сборки tsc?

Ответ 1

Вы можете использовать бегуна задач, таких как глоток, чтобы сделать это...

Вы можете настроить vscode для запуска задачи build ниже, которая зависит от задачи compile.

var gulp = require('gulp'),
  exec = require('child_process').exec;

gulp.task('build', ['compile'], function () {
  return gulp.src('./config/**/*.json')
    .pipe(gulp.dest('./dist'));
});

gulp.task('compile', function (done) {
  exec('tsc -p ./app', function (err, stdOut, stdErr) {
    console.log(stdOut);
    if (err){
      done(err);
    } else {
      done();
    }
  });
});

Здесь есть документация по запуску задач gulp через vscode: https://code.visualstudio.com/Docs/tasks

Ответ 2

Вы можете использовать npm scripts для этого. Например, мой package.json:

"scripts": {
  "compile": "tsc -p . ",
  "html": "cp -r ./src/public/ ./bin/public/",
  "views": "cp -r ./src/views/ ./bin/views/",
  "build": "npm run compile && npm run views && npm run html"
}

Здесь два сценария html и views для копирования, а задача build запускает их одновременно. В tasks.json у меня есть следующее:

{
    "version": "0.1.0",
    "command": "npm",
    "isShellCommand": true,
    "showOutput": "silent",
    "suppressTaskName": true,
    "tasks": [
        {
            "taskName": "build",
            "args": [
                "run",
                "build"
            ]
        }
    ]
}

Итак shift+cmd+B будет запускать npm build script.

Ответ 3

Если вы работаете в каком-то "режиме разработчика" и вам нужно --watch, чтобы изменения файлов запускались после каждой компиляции, я предпочитаю использовать tsc-watch для этого.

Например, в package.json:

{
  "scripts": {
    "dev": "tsc-watch --onSuccess=\"yarn otherThing\"",
    "otherThing": "echo \"hi\""
  }
}