Mark Nadig
Mark Nadig

Reputation: 5136

How to configure Visual Studio Code and tslint?

In 0.3.0, I'm seeing intellisense for typescript. However, I was also expecting to see some tslinting as I have a tslint.json. Does VSC support linting natively or do I just need to lean on gulp?

If the latter, is it configurable to run as files are changed or does it need to be a manual task that is launched explicitly.

Upvotes: 29

Views: 33170

Answers (2)

Shaun Luttin
Shaun Luttin

Reputation: 141512

Short answer

Does VSC support linting natively or do I just need to lean on gulp?

Yes. VS Code supports linting with the TSLint extension. There is no need for gulp.

Steps to integrate TSLint into VS Code

First, install prerequisites: TSLint and TypeScript.

npm install -g tslint typescript

Second, add a tslint.json file to your project root. You can do this with tslint --init, which gives you nice defaults. Alternatively, create the file and use this minimal config, which inherits recommended rules.

// tslint.json 
{
  "extends": "tslint:recommended",
  "rules": {}
}

Third, install the TSLint extension for VS Code.

  1. Open VS Code in your project's root.
  2. Open the command palette CTRL + P
  3. ext install tslint.
  4. Choose Install, then choose Enable, finally restart VS Code.

Fourth, enjoy your integrated TS Lint.

TSLint in action in VS Code.

Upvotes: 34

John Papa
John Papa

Reputation: 22298

You can add a linting task to your gulpfile like below. Or even a watcher task. Notice I just use TypeScript, not gulp plug in nor tslint, though they are fine too.

gulp.task('ts-watcher', function() {
    gulp.watch('./src/**/*.ts', ['ts-compile']);
});

gulp.task('ts-compile', function(done) {    
    runTSC('src/client', done);
});

function runTSC(directory, done) {
    var tscjs = path.join(process.cwd(), 'node_modules/typescript/bin/tsc.js');
    var childProcess = cp.spawn('node', [tscjs, '-p', directory], { cwd: process.cwd() });
    childProcess.stdout.on('data', function (data) {
        // Code will read the output
        console.log(data.toString());
    });
    childProcess.stderr.on('data', function (data) {
        // Code will read the output
        console.log(data.toString());
    });
    childProcess.on('close', function () {
        done();
    });
}

Upvotes: 5

Related Questions