aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichał Gołębiowski <m.goleb@gmail.com>2016-07-11 19:21:57 +0200
committerMichał Gołębiowski <m.goleb@gmail.com>2016-07-13 10:54:34 +0200
commit030191ae32dfcb7ecb2efb61d17a4964a3633e44 (patch)
treedb1c9d42898238a3753b69969adb45c846ee8ab3
parent6e605afb1fb85dddf0e2b3563f5dee26cd77623e (diff)
downloadjquery-030191ae32dfcb7ecb2efb61d17a4964a3633e44.tar.gz
jquery-030191ae32dfcb7ecb2efb61d17a4964a3633e44.zip
Build: Skip running ESLint on Node.js 0.x
ESLint 3.0 drops support for Node.js older than 4.x. To be able to update to this version and yet not block our contributors from building jQuery on older Node.js (at least until it's supported by upstream) this commit makes ESLint skipped on older Node; a proper message is displayed then. Fixes gh-3222
-rw-r--r--Gruntfile.js48
1 files changed, 35 insertions, 13 deletions
diff --git a/Gruntfile.js b/Gruntfile.js
index 62adbda39..7af3ac98a 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -14,9 +14,14 @@ module.exports = function( grunt ) {
var fs = require( "fs" ),
gzip = require( "gzip-js" ),
+ oldNode = /^v0\./.test( process.version );
- // Skip jsdom-related tests in Node.js 0.10 & 0.12
- runJsdomTests = !/^v0/.test( process.version );
+ // Support: Node.js <4
+ // Skip running tasks that dropped support for Node.js 0.10 & 0.12
+ // in those Node versions.
+ function runIfNewNode( task ) {
+ return oldNode ? "print_old_node_message:" + task : task;
+ }
if ( !grunt.option( "filename" ) ) {
grunt.option( "filename", "jquery.js" );
@@ -176,33 +181,50 @@ module.exports = function( grunt ) {
} );
// Load grunt tasks from NPM packages
- require( "load-grunt-tasks" )( grunt );
+ // Support: Node.js <4
+ // Don't load the eslint task in old Node.js, it won't parse.
+ require( "load-grunt-tasks" )( grunt, {
+ pattern: oldNode ? [ "grunt-*", "!grunt-eslint" ] : [ "grunt-*" ]
+ } );
// Integrate jQuery specific tasks
grunt.loadTasks( "build/tasks" );
- grunt.registerTask( "lint", [ "jsonlint", "eslint:all" ] );
+ grunt.registerTask( "print_old_node_message", function() {
+ var task = [].slice.call( arguments ).join( ":" );
+ grunt.log.writeln( "Old Node.js detected, running the task \"" + task + "\" skipped..." );
+ } );
- // Don't run Node-related tests in Node.js < 1.0.0 as they require an old
- // jsdom version that needs compiling, making it harder for people to compile
- // jQuery on Windows. (see gh-2519)
- grunt.registerTask( "test_fast", runJsdomTests ? [ "node_smoke_tests" ] : [] );
+ grunt.registerTask( "lint", [
+ "jsonlint",
+ runIfNewNode( "eslint:all" )
+ ] );
+
+ grunt.registerTask( "test_fast", [ runIfNewNode( "node_smoke_tests" ) ] );
grunt.registerTask( "test", [ "test_fast" ].concat(
- runJsdomTests ? [ "promises_aplus_tests" ] : []
+ [ runIfNewNode( "promises_aplus_tests" ) ]
) );
// Short list as a high frequency watch task
grunt.registerTask( "dev", [
"build:*:*",
- "newer:eslint:dev",
+ runIfNewNode( "newer:eslint:dev" ),
"uglify",
"remove_map_comment",
"dist:*"
]
);
- grunt.registerTask( "default", [ "dev", "eslint:dist", "test_fast", "compare_size" ] );
-
- grunt.registerTask( "precommit_lint", [ "newer:jsonlint", "newer:eslint:all" ] );
+ grunt.registerTask( "default", [
+ "dev",
+ runIfNewNode( "eslint:dist" ),
+ "test_fast",
+ "compare_size"
+ ] );
+
+ grunt.registerTask( "precommit_lint", [
+ "newer:jsonlint",
+ runIfNewNode( "newer:eslint:all" )
+ ] );
};