gpt4 book ai didi

javascript - 如果 JSHint 在监视任务期间失败,如何使 Grunt 构建失败?

转载 作者:行者123 更新时间:2023-12-02 14:05:57 25 4
gpt4 key购买 nike

这似乎是一个基本问题,但我不知道该怎么做。 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但我在这里该如何使用它呢?

最佳答案

以下要点将通过 CLI 报告 jshint 错误,并且在保存 .js 文件时无法执行任何后续构建步骤。

您需要根据您的要求进行调整:

目录结构:

project

├──package.json

├───scripts
│ │
│ └───test.js

├─── Gruntfile.js

└───node_modules

└─── ...

package.json

{
"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"
}
}

Gruntfile.js

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', [

]);

};

测试.js

console.log('Hello World');

var test = function() {
return 'test';
};

测试演示要点

  1. cdproject 目录
  2. 运行$ npm install
  3. 运行$ grunt watch
  4. 打开 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...

注意:

watch.js 对象的 tasks 数组中指定的任何后续构建任务(例如 concat 按照 >Gruntfile.js),将不会使用此要点调用,因为 jshint 任务失败(...并且 concat 任务当然尚未定义!)。

但是,当 JavaScript 文件成功通过 jshint 任务时,watch.js 的 tasks 数组中定义的任何后续构建任务 对象将被调用。

希望这会有所帮助!

关于javascript - 如果 JSHint 在监视任务期间失败,如何使 Grunt 构建失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40031078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com