Skip to content
This repository has been archived by the owner on Nov 4, 2021. It is now read-only.

Can't use tslint without default options #40

Open
cfjedimaster opened this issue Jul 6, 2016 · 8 comments
Open

Can't use tslint without default options #40

cfjedimaster opened this issue Jul 6, 2016 · 8 comments

Comments

@cfjedimaster
Copy link

If I try to do just gulp.task('lint', tslint); as the readme suggests, I get:

Error: ENOENT: no such file or directory, open 'tslint.json'
@cfjedimaster
Copy link
Author

Ok, so I believe the issue is that the default is to expect source/tslint.json, which is fine, but the readme makes it kind of seem that you don't need to do anything else besides require tslint and call it simply. I'd document the requirement.

@cfjedimaster cfjedimaster changed the title Can't use without default options Can't use tslint without default options Jul 6, 2016
@cfjedimaster
Copy link
Author

cfjedimaster commented Jul 6, 2016

As just an FYI, I have not been able to get this linter to report anything yet. Here is a sample task:

gulp.task('lint', function () {
  return tslint({
    src: 'app/**/*.ts',
    tslintOptions: {
      configuration: {
        rules:{
"quotemark":"single"
        }
      }
    },
    reporter: "prose",
    reportOptions: {
      emitError: true
    }
  });
});

And if I gulp lint (to quickly test and bypass ionic serve) it reports no issues. If run tslint app/app.ts directly I get a host of issues.

@brandyscarney
Copy link
Member

How are you including it? For example, this is working for me:

var tsLint = require('ionic-gulp-tslint');
gulp.task('tslint', tsLint);

where my tslint.json is located in the same directory as my gulpfile containing:

{
  "rules": {
    "quotemark": [
      true,
      "single"
    ]
  }
}

The default rule configuration is tslint.json: https://github.com/driftyco/ionic-gulp-tasks/tree/master/lint-typescript#tslintoptions

If I change your task to this:

gulp.task('lint', function () {
  return tsLint({
    src: 'app/**/*.ts',
    tslintOptions: {
      configuration: {
        "rules": {
          "quotemark": [
            true,
            "single"
          ]
        }
      }
    },
    reporter: "prose",
    reportOptions: {
      emitError: true
    }
  });
});

I'm seeing it work. So maybe it is something with the rules?

I am seeing an issue with the tslint.json using extends, however.

@cfjedimaster
Copy link
Author

Wow. So the issue was in the quotemark area. I had:

"quotemark":"single"

Switching to the array of values helped. So I can now verify that it works - but you just have to be real careful (obviously).

I still think we have a few issues. The doc issue is important I think because it won't work out of the box (right?) or should it work and there is another issue?

@cfjedimaster
Copy link
Author

btw - so sorry for the delay in responding - this came in while I was on vacation last week and this has been hell week for me :)

@cfjedimaster
Copy link
Author

As a follow up, I'm doing my link task in watch:

gulp.task('watch', ['clean','lint'], function(done){

and when I edit code while running ionic serve, I expect to see it in the console. I see lint issues initially on startup:

image

But then... it's weird. If I edit a JS file, it won't restart. So it's broken, but it's like the CLI doesn't know it is broken.

@brandyscarney
Copy link
Member

It should work just by including the following in your gulpfile:

var tslint = require('ionic-gulp-tslint');

gulp.task('lint', tslint);

then a tslint.json file containing:

{
  "extends": "tslint-ionic-rules"
}

as of ionic-gulp-tslint version 1.1.0. And then if you want to watch the ts or js files you could add a line to the gulp watch like this:

gulp.task('watch', ['clean'], function(done){
  runSequence(
    ['sass', 'html', 'fonts', 'scripts'],
    function(){
      gulpWatch('app/**/*.scss', function(){ gulp.start('sass'); });
      gulpWatch('app/**/*.html', function(){ gulp.start('html'); });
      gulpWatch('app/**/*.ts', function(){ gulp.start('lint'); });
      buildBrowserify({ watch: true }).on('end', done);
    }
  );
});

the line added is this one:

gulpWatch('app/**/*.ts', function(){ gulp.start('lint'); });

:)

@cfjedimaster
Copy link
Author

Things are coming together now - thank you!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants