Подтвердить что ты не робот

Настройка TSLint в Visual Studio 2015

Я разрабатываю с Typescript в Visual Studio 2013 и всегда открываю свой список ошибок внизу. TSLint говорит мне, когда мой код грязный/неправильный, как я его пишу. Я не думаю, что мне нужно было что-то делать, кроме как установить плагин Web Essentials.

Недавно я установил Visual Studio 2015 и не могу, на всю жизнь, заставить TSLint работать так же, как в Visual Studio 2013. Я пропустил что-то очевидное?

4b9b3361

Ответ 2

Теперь вы должны использовать это с помощью задач gulp, чтобы это произошло. Это немного боль, если вы спросите меня, но это работает! Так мы это делаем:

  • Установить Node: https://nodejs.org
  • Установить Gulp: http://gulpjs.com
  • Установите пакеты gulp в корень проекта:
    • В командной строке cd C:\\path\to\project
    • npm install gulp-tslint --save-dev
    • npm install gulp-plumber --save-dev

Дополнительно:

  • npm install gulp-newer --save-dev
  • npm install gulp-watch --save-dev

Теперь все установлено! Откройте Visual Studio и добавьте новый gulpfile.js в корневой каталог проекта со следующим содержимым:

/// <binding AfterBuild='TSLint:All' ProjectOpened='TSLint:Watch' />
//Node packages
var gulp    = require("gulp");
var plumber = require("gulp-plumber");
var tslint  = require("gulp-tslint");

//Only include these 2 packages if you've installed them
var newer   = require("gulp-newer");
var watch   = require("gulp-watch");


//Paths to include/exclude
var TYPE_SCRIPT_FILES = ["app/**/*.ts", "!app/core/Events.ts"];

//Our TSLint settings
var TYPE_SCRIPT_REPORT = tslint.report("prose", {
    emitError: false,
    reportLimit: 50
});

//The actual task to run
gulp.task("TSLint:All", function () {
    return gulp.src(TYPE_SCRIPT_FILES)
        .pipe(plumber())
        .pipe(tslint())
        .pipe(TYPE_SCRIPT_REPORT);
});


//===== ONly include the below code if needed
// File locations
var BIN = "bin";

// Listens for new (updated) typescript files and runs through TSlint
gulp.task("TSLint:Newer", [], function (done) {
    return gulp.src(TYPE_SCRIPT_FILES)
        .pipe(plumber())
        .pipe(newer(BIN))
        .pipe(tslint())
        .pipe(TYPE_SCRIPT_REPORT)
        .pipe(gulp.dest(BIN));
});

//This task runs when the project opens. When any file changes, it will be run through TSLint
gulp.task('TSLint:Watch', function () {
    return gulp.src(TYPE_SCRIPT_FILES)
        .pipe(watch(TYPE_SCRIPT_FILES))
        .pipe(plumber())
        .pipe(tslint())
        .pipe(TYPE_SCRIPT_REPORT)
        .pipe(gulp.dest(BIN));
});

Хорошо, теперь все готово к использованию! Теперь в Visual Studio откройте Проводник запуска задач. Задачи должны появиться здесь.

Visual Studio 2015 Task Runner Explorer

Нельзя указывать каждую задачу при запуске. Вы можете установить это, щелкнув правой кнопкой мыши по каждой задаче и просто добавив в первую строку на gulpfile.js

Visual Studio 2015 Task Runner Explorer Bindings


  • Задача TSLint:All будет запускать TSLint для всех указанных файлов.
  • Задача TSLint:Newer будет запускать TSLint для всех файлов, которые были изменены с момента последней проверки.
  • Задача TSLint:Watch будет продолжать работать и автоматически проверять файлы по мере их сохранения!

Ответ 3

Похоже, есть пакет nuget, который может вам помочь. Если вы щелкните правой кнопкой мыши по проекту и выберите "Управление пакетами NuGet" и выполните поиск tslint, вы найдете пакет под названием "NCapsulateExtensions.TsLint", который должен работать для вас.

Я лично не смог проверить это, потому что пакет требует System.Web.Helpers.dll, и у меня его нет на моей машине (и я не могу найти его в любом месте). Итак, я просмотрел репозиторий git и обнаружил, что пакет nuget фактически не использует эту dll и отправил запрос на перенос, чтобы удалить его. Тем временем, моя вилка находится здесь:

https://github.com/mbraude/NCapsulateExtensions.TsLint

Надеюсь, вы или кто-то еще знает, где System.Web.Helpers, чтобы вы могли установить это и попробовать, или автор берет запрос на перенос и публикует новую версию.

Если это не закончится, вам нужно будет сделать что-то подобное в своем проекте - вызовите tslint из пользовательской задачи msbuild. Вы также можете клонировать это решение и настраивать его вручную без nuget - это будет намного больше работы.