这似乎是一个基本问题,但我无法弄清楚如何去做。 This is how to do it in gulp
我希望在保存带有jshint错误的文件时使Grunt构建失败。输出表明jshint失败但Grunt仍然成功完成。
grunt.initConfig({
watch: {
js: {
files: ['/scripts/{,**}/*.js'],
tasks: ['newer:jshint:all']
}
}
})
我知道有grunt.fail
但我怎么在这里使用它?
答案 0 :(得分:2)
以下要点将通过CLI报告jshint
错误,并且在保存.js
文件时无法执行任何后续构建步骤。
您需要根据自己的要求进行调整:
project
│
├──package.json
│
├───scripts
│ │
│ └───test.js
│
├─── Gruntfile.js
│
└───node_modules
│
└─── ...
{
"name": "stack40031078",
"version": "0.0.1",
"description": "Answer to stack question 40031078",
"author": "RobC",
"license": "Apache-2.0",
"devDependencies": {
"grunt": "^1.0.1",
"grunt-contrib-jshint": "^1.0.0",
"grunt-contrib-watch": "^1.0.0",
"grunt-newer": "^1.2.0"
}
}
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
// VALIDATE JS
jshint: {
// Note we're using 'src:' instead of 'all:' below.
files: {
src: './scripts/{,**}/*.js'
},
options: {
// Use your jshint config here or define them in
// a separate .jshintrc file and set the flag to:
//
// jshintrc: true
curly: true,
eqeqeq: true,
immed: true,
latedef: true,
newcap: true,
noarg: true,
sub: true,
undef: true,
boss: true,
eqnull: true,
browser: true,
smarttabs: true,
globals: {}
}
},
// WATCH THE JS FILES
watch: {
js: {
files: ['./scripts/{,**}/*.js'],
// NOTE: we're not using 'newer:jshint:all' below, just 'newer:jshint'
tasks: ['newer:jshint' /* <-- Add subsequent build tasks here. E.g. ,'concat' - A registered task can also be added. E.g. 'default' */]
}
}
});
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-newer');
grunt.registerTask('default', [
]);
};
console.log('Hello World');
var test = function() {
return 'test';
};
cd
到project
目录$ npm install
$ grunt watch
test.js
进行简单编辑,(例如在文件末尾添加新行),然后保存更改。CLI报告错误如下:
Running "jshint:files" (jshint) task
./scripts/test.js
1 |console.log('Hello Universe');
^ 'console' is not defined.
>> 1 error in 1 file
Warning: Task "jshint:files" failed. Use --force to continue.
Aborted due to warnings.
Completed in 0.965s at Fri Oct 14 2016 10:22:59 GMT+0100 (BST) - Waiting...
注意:强>
tasks
对象的watch.js
数组中指定的任何后续构建任务(例如,concat
中注释的Gruntfile.js
)将不会使用此方法调用gist jshint
任务失败(......当然没有定义concat
任务!)。
但是,当JavaScript文件成功传递jshint
任务时,将调用tasks
对象的watch.js
数组中定义的任何后续构建任务。
我希望这有帮助!