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']
}
}
注:
- 名为
tslint
的 target 已从您的 watch
任务中删除。
- 对 运行
tslint
任务的调用现已添加到 ts
目标的 tasks
数组中。
现在当您 运行 $ grunt watch
时,文件将是:
- 根据
tslint.json
中定义的规则使用 tslint
进行了 Linted。
- 如果他们通过检查,他们将被转译为
grunt-ts
。
- 如果检查失败,则不会转译任何文件,任何错误都会报告给 CLI。
希望对您有所帮助!
上一个答案:
一个可能的解决方案是尝试恢复到 grunt-ts
包的最后一个稳定版本。
为此:
cd
到你的项目目录。
卸载当前版本grunt-ts
:
$ npm uninstall grunt-ts --save-dev
- 然后安装
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']
}
我正在做一个 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']
}
}
注:
- 名为
tslint
的 target 已从您的watch
任务中删除。 - 对 运行
tslint
任务的调用现已添加到ts
目标的tasks
数组中。
现在当您 运行 $ grunt watch
时,文件将是:
- 根据
tslint.json
中定义的规则使用tslint
进行了 Linted。 - 如果他们通过检查,他们将被转译为
grunt-ts
。 - 如果检查失败,则不会转译任何文件,任何错误都会报告给 CLI。
希望对您有所帮助!
上一个答案:
一个可能的解决方案是尝试恢复到 grunt-ts
包的最后一个稳定版本。
为此:
cd
到你的项目目录。卸载当前版本
grunt-ts
:
$ npm uninstall grunt-ts --save-dev
- 然后安装
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']
}