diff --git a/Gruntfile.js b/Gruntfile.js index fc35a843a..b10ebb2dc 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -12,11 +12,18 @@ module.exports = function( grunt ) { return data; } + // Support: Node.js <12 + // Skip running tasks that dropped support for Node.js 10 + // in this Node version. + function runIfNewNode( task ) { + return oldNode ? "print_old_node_message:" + task : task; + } + var fs = require( "fs" ), gzip = require( "gzip-js" ), + oldNode = /^v10\./.test( process.version ), isTravis = process.env.TRAVIS, - travisBrowsers = process.env.BROWSERS && process.env.BROWSERS.split( "," ), - CLIEngine = require( "eslint" ).CLIEngine; + travisBrowsers = process.env.BROWSERS && process.env.BROWSERS.split( "," ); if ( !grunt.option( "filename" ) ) { grunt.option( "filename", "jquery.js" ); @@ -117,9 +124,14 @@ module.exports = function( grunt ) { // Ignore files from .eslintignore // See https://github.com/sindresorhus/grunt-eslint/issues/119 - ...new CLIEngine() - .getConfigForFile( "Gruntfile.js" ) - .ignorePatterns.map( ( p ) => `!${ p }` ) + ...fs + .readFileSync( `${ __dirname }/.eslintignore`, "utf-8" ) + .split( "\n" ) + .filter( filePath => filePath ) + .map( filePath => filePath[ 0 ] === "!" ? + filePath.slice( 1 ) : + `!${ filePath }` + ) ] } }, @@ -334,11 +346,18 @@ module.exports = function( grunt ) { } ); // Load grunt tasks from NPM packages - require( "load-grunt-tasks" )( grunt ); + require( "load-grunt-tasks" )( grunt, { + pattern: oldNode ? [ "grunt-*", "!grunt-eslint" ] : [ "grunt-*" ] + } ); // Integrate jQuery specific tasks grunt.loadTasks( "build/tasks" ); + grunt.registerTask( "print_old_node_message", ( ...args ) => { + var task = args.join( ":" ); + grunt.log.writeln( "Old Node.js detected, running the task \"" + task + "\" skipped..." ); + } ); + grunt.registerTask( "lint", [ "jsonlint", @@ -346,16 +365,16 @@ module.exports = function( grunt ) { // would run the dist target first which would point to errors in the built // file, making it harder to fix them. We want to check the built file only // if we already know the source files pass the linter. - "eslint:dev", - "eslint:dist" + runIfNewNode( "eslint:dev" ), + runIfNewNode( "eslint:dist" ) ] ); grunt.registerTask( "lint:newer", [ "newer:jsonlint", // Don't replace it with just the task; see the above comment. - "newer:eslint:dev", - "newer:eslint:dist" + runIfNewNode( "newer:eslint:dev" ), + runIfNewNode( "newer:eslint:dist" ) ] ); grunt.registerTask( "test:fast", "node_smoke_tests" ); @@ -378,7 +397,7 @@ module.exports = function( grunt ) { grunt.registerTask( "dev", [ "build:*:*", - "newer:eslint:dev", + runIfNewNode( "newer:eslint:dev" ), "newer:uglify", "remove_map_comment", "dist:*", @@ -387,14 +406,14 @@ module.exports = function( grunt ) { ] ); grunt.registerTask( "default", [ - "eslint:dev", + runIfNewNode( "eslint:dev" ), "build:*:*", "amd", "uglify", "remove_map_comment", "dist:*", "test:prepare", - "eslint:dist", + runIfNewNode( "eslint:dist" ), "test:fast", "compare_size" ] ); diff --git a/package.json b/package.json index 092067e24..48bad143d 100644 --- a/package.json +++ b/package.json @@ -30,14 +30,14 @@ "commitplease": "3.2.0", "core-js-bundle": "3.6.5", "eslint-config-jquery": "3.0.0", - "eslint-plugin-import": "2.22.0", + "eslint-plugin-import": "2.25.2", "grunt": "1.2.1", "grunt-babel": "8.0.0", "grunt-cli": "1.3.2", "grunt-compare-size": "0.4.2", "grunt-contrib-uglify": "3.4.0", "grunt-contrib-watch": "1.1.0", - "grunt-eslint": "23.0.0", + "grunt-eslint": "24.0.0", "grunt-git-authors": "3.2.0", "grunt-jsonlint": "2.1.2", "grunt-karma": "4.0.0",