grunt-tslint 不在监视任务中工作

grunt-tslint is not working at the watch task

我正在做一个 angular2 项目,并包含了 grunt-tslint 来改进我的代码。 grunt 任务 "tslint" 和默认的 grunt 任务工作正常,但是当我将它包含在 watch 任务中时,它没有 linting。我试图删除所有其他监视任务,但也没有用。

这是我的版本:
咕噜声:v1.0.1
grunt-contrib-watch:1.0.0
grunt-ts: v6.0.0-beta.3
咕噜-tslint:4.0.0

和 grunt 任务:

module.exports = function (grunt) {

grunt.initConfig({

    pkg: grunt.file.readJSON('package.json'),
    tslint: {
        options: {
            configuration: "tslint.json",
            force: false,
            fix: false
        },
        files: {
            src: ['app/**/*.ts']
        }
    },
    ts: {
        default : {
            src: ['app/**/*.ts'],
            outDir: 'outDir/app/',
            tsconfig: './tsconfig.json'
        }
    },

watch: {
        tslint: {
            files: ['app/**/*.ts'],
            task: ['tslint']
        },
        ts: {
            files: ['app/**/*.ts'],
            tasks: ['ts']
        }
    }
});

grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-ts');
grunt.loadNpmTasks('grunt-tslint');

grunt.registerTask('default', [
    'ts', 'tslint'
]);

grunt.registerTask('validate:ts', ['tslint']);

};


更新:

尝试用以下内容替换您的监视任务:

watch: {
    ts: {
        files: ['app/**/*.ts'],
        tasks: ['tslint', 'ts']
    }
}

注:

  1. 名为 tslinttarget 已从您的 watch 任务中删除。
  2. 对 运行 tslint 任务的调用现已添加到 ts 目标的 tasks 数组中。

现在当您 运行 $ grunt watch 时,文件将是:

  1. 根据 tslint.json 中定义的规则使用 tslint 进行了 Linted。
  2. 如果他们通过检查,他们将被转译为 grunt-ts
  3. 如果检查失败,则不会转译任何文件,任何错误都会报告给 CLI。

希望对您有所帮助!


上一个答案:

一个可能的解决方案是尝试恢复到 grunt-ts 包的最后一个稳定版本。

为此:

  1. cd到你的项目目录。

  2. 卸载当前版本grunt-ts:

$ npm uninstall grunt-ts --save-dev

  1. 然后安装grunt-ts (看起来是5.5.1)的最后一个稳定版本

$ npm install grunt-ts@5.5.1 --save-dev

注意:我建议用你的项目目录的副本尝试上面的操作,看看它是否成功!

我想我找到了解决办法。 watch 任务是用两个任务(ts 和 tslint)监视文件夹,它只运行 ts(最后一个任务)。我将两者结合起来,现在可以使用了:

        ts: {
            files: ['app/**/*.ts'],
            tasks: ['ts', 'tslint']
        }