]> source.dussan.org Git - jquery.git/commitdiff
Build: Skip running ESLint on Node.js 0.x
authorMichał Gołębiowski <m.goleb@gmail.com>
Mon, 11 Jul 2016 17:21:57 +0000 (19:21 +0200)
committerMichał Gołębiowski <m.goleb@gmail.com>
Wed, 13 Jul 2016 08:54:34 +0000 (10:54 +0200)
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

Gruntfile.js

index 62adbda39e361c1f714b2ecbbf17a07dcffaeb4a..7af3ac98aebc4afce9eb8a6b997f49e9d97b0298 100644 (file)
@@ -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" )
+       ] );
 };