diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..2c3c2d3c --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,10 @@ +{ + "root": true, + "extends": [ + "wikimedia/client", + "wikimedia/jquery" + ], + "globals": { + "mw": false + } +} diff --git a/.gitignore b/.gitignore index d4a6d98f..e38ab2ea 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ -.* *~ *.kate-swp .*.swp node_modules/ /composer.lock /vendor/ +.eslintcache diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 9494e554..00000000 --- a/.jshintrc +++ /dev/null @@ -1,24 +0,0 @@ -{ - "predef": [ - "jQuery", - "mediaWiki" - ], - /* Common */ - - // Enforcing - "camelcase": true, - "curly": true, - "eqeqeq": true, - "immed": true, - "latedef": true, - "newcap": true, - "noarg": true, - "noempty": true, - "nonew": true, - "quotmark": "single", - "trailing": true, - "undef": true, - "unused": true, - // Environment - "browser": true -} diff --git a/Gruntfile.js b/Gruntfile.js index be5d2541..7c0766ee 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,17 +1,20 @@ -/*jshint node:true */ +/* eslint-env node, es6 */ module.exports = function ( grunt ) { - grunt.loadNpmTasks( 'grunt-contrib-jshint' ); + var conf = grunt.file.readJSON( 'extension.json' ); + + grunt.loadNpmTasks( 'grunt-eslint' ); grunt.loadNpmTasks( 'grunt-banana-checker' ); grunt.loadNpmTasks( 'grunt-jsonlint' ); - var conf = grunt.file.readJSON( 'extension.json' ); grunt.initConfig( { - jshint: { + eslint: { options: { - jshintrc: true + reportUnusedDisableDirectives: true, + cache: true }, all: [ - '*.js' + '**/*.js', + '!{vendor,node_modules}/**' ] }, banana: conf.MessagesDirs, @@ -24,6 +27,6 @@ module.exports = function ( grunt ) { } } ); - grunt.registerTask( 'test', [ 'jshint', 'jsonlint', 'banana' ] ); + grunt.registerTask( 'test', [ 'eslint', 'jsonlint', 'banana' ] ); grunt.registerTask( 'default', 'test' ); }; diff --git a/ext.nuke.confirm.js b/ext.nuke.confirm.js index 8a33293f..eff85797 100644 --- a/ext.nuke.confirm.js +++ b/ext.nuke.confirm.js @@ -1,14 +1,14 @@ -( function ( mw, $ ) { +( function () { $( function () { - /*global confirm */ - // Confirm nuke + // eslint-disable-next-line no-jquery/no-global-selector $( 'form[name="nukelist"]' ).on( 'submit', function () { var pages = $( this ).find( 'input[name="pages[]"][type="checkbox"]:checked' ); if ( pages.length ) { + // eslint-disable-next-line no-alert return confirm( mw.message( 'nuke-confirm', pages.length ) ); } } ); } ); -}( mediaWiki, jQuery ) ); +}() ); diff --git a/package.json b/package.json index c22649f5..04a9f713 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,10 @@ "test": "grunt test" }, "devDependencies": { + "eslint-config-wikimedia": "0.12.0", "grunt": "1.0.3", "grunt-banana-checker": "0.6.0", - "grunt-contrib-jshint": "1.1.0", + "grunt-eslint": "21.0.0", "grunt-jsonlint": "1.1.0" } }