1

我正在开发一个 angular2 项目,并包含 grunt-tslint 来改进我的代码。grunt 任务“tslint”和默认 grunt 任务很好,但是当我将它包含到 watch 任务中时,它不是 linting。我试图删除所有其他监视任务,但也没有工作。

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

还有繁重的任务:

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']);

};

4

2 回答 2

1

我想我找到了解决办法。监视任务正在监视具有两个任务(ts 和 tslint)的文件夹,它只运行 ts(最后一个任务)。我将两者结合起来,现在它正在工作:

        ts: {
            files: ['app/**/*.ts'],
            tasks: ['ts', 'tslint']
        }
于 2017-01-13T13:36:49.650 回答
0

更新:

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

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

笔记:

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

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

  1. tslint根据定义的规则使用tslint.json.
  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

注意:我建议您使用项目目录的副本尝试上述方法,看看它是否成功!

于 2017-01-12T14:58:51.417 回答