mirror of
https://github.com/moodle/moodle.git
synced 2025-01-17 21:49:15 +01:00
61fca0e05c
Prior to this change all Grunt features were in a single Gruntfile.js but this has become difficult to manage and maintain. This commit moves the existing dependencies for component calculation and babel moduel definition into a new .grunt directory, and restructures the existing tasks in Gruntfile.js into separate task configuration files. This improves the maintainability of the Grunt build system and allows for easier future expansion.
250 lines
7.9 KiB
Plaintext
250 lines
7.9 KiB
Plaintext
{
|
|
'plugins': [
|
|
'babel',
|
|
'promise',
|
|
],
|
|
'env': {
|
|
'browser': true,
|
|
'amd': true
|
|
},
|
|
'globals': {
|
|
'M': true,
|
|
'Y': true
|
|
},
|
|
'rules': {
|
|
// See http://eslint.org/docs/rules/ for all rules and explanations of all
|
|
// rules.
|
|
|
|
// === Possible Errors ===
|
|
'comma-dangle': 'off',
|
|
'no-compare-neg-zero': 'error',
|
|
'no-cond-assign': 'error',
|
|
'no-console': 'error',
|
|
'no-constant-condition': 'error',
|
|
'no-control-regex': 'error',
|
|
'no-debugger': 'error',
|
|
'no-dupe-args': 'error',
|
|
'no-dupe-keys': 'error',
|
|
'no-duplicate-case': 'error',
|
|
'no-empty': 'warn',
|
|
'no-empty-character-class': 'error',
|
|
'no-ex-assign': 'error',
|
|
'no-extra-boolean-cast': 'error',
|
|
'no-extra-parens': 'off',
|
|
'no-extra-semi': 'error',
|
|
'no-func-assign': 'error',
|
|
'no-inner-declarations': 'error',
|
|
'no-invalid-regexp': 'error',
|
|
'no-irregular-whitespace': 'error',
|
|
'no-obj-calls': 'error',
|
|
'no-prototype-builtins': 'off',
|
|
'no-regex-spaces': 'error',
|
|
'no-sparse-arrays': 'error',
|
|
'no-unexpected-multiline': 'error',
|
|
'no-unreachable': 'warn',
|
|
'no-unsafe-finally': 'error',
|
|
'no-unsafe-negation': 'error',
|
|
'use-isnan': 'error',
|
|
'valid-jsdoc': ['warn', { 'requireReturn': false, 'requireParamDescription': false, 'requireReturnDescription': false }],
|
|
'valid-typeof': 'error',
|
|
|
|
// === Best Practices ===
|
|
// (these mostly match our jshint config)
|
|
'array-callback-return': 'warn',
|
|
'block-scoped-var': 'warn',
|
|
'complexity': 'warn',
|
|
'consistent-return': 'warn',
|
|
'curly': 'error',
|
|
'dot-notation': 'warn',
|
|
'no-alert': 'warn',
|
|
'no-caller': 'error',
|
|
'no-case-declarations': 'error',
|
|
'no-div-regex': 'error',
|
|
'no-empty-pattern': 'error',
|
|
'no-empty-function': 'warn',
|
|
'no-eq-null': 'error',
|
|
'no-eval': 'error',
|
|
'no-extend-native': 'error',
|
|
'no-extra-bind': 'warn',
|
|
'no-fallthrough': 'error',
|
|
'no-floating-decimal': 'warn',
|
|
'no-global-assign': 'warn',
|
|
'no-implied-eval': 'error',
|
|
'no-invalid-this': 'error',
|
|
'no-iterator': 'error',
|
|
'no-labels': 'error',
|
|
'no-loop-func': 'error',
|
|
'no-multi-spaces': 'warn',
|
|
'no-multi-str': 'error',
|
|
'no-new-func': 'error',
|
|
'no-new-wrappers': 'error',
|
|
'no-octal': 'error',
|
|
'no-octal-escape': 'error',
|
|
'no-proto': 'error',
|
|
'no-redeclare': 'warn',
|
|
'no-return-assign': 'error',
|
|
'no-script-url': 'error',
|
|
'no-self-assign': 'error',
|
|
'no-self-compare': 'error',
|
|
'no-sequences': 'warn',
|
|
'no-throw-literal': 'warn',
|
|
'no-unmodified-loop-condition': 'error',
|
|
'no-unused-expressions': 'error',
|
|
'no-unused-labels': 'error',
|
|
'no-useless-call': 'warn',
|
|
'no-useless-escape': 'warn',
|
|
'no-with': 'error',
|
|
'wrap-iife': ['error', 'any'],
|
|
|
|
// === Variables ===
|
|
'no-delete-var': 'error',
|
|
'no-undef': 'error',
|
|
'no-undef-init': 'error',
|
|
'no-unused-vars': ['error', { 'caughtErrors': 'none' }],
|
|
|
|
// === Stylistic Issues ===
|
|
'array-bracket-spacing': 'warn',
|
|
'block-spacing': 'warn',
|
|
'brace-style': ['warn', '1tbs'],
|
|
'camelcase': 'warn',
|
|
'capitalized-comments': ['warn', 'always', { 'ignoreConsecutiveComments': true }],
|
|
'comma-spacing': ['warn', { 'before': false, 'after': true }],
|
|
'comma-style': ['warn', 'last'],
|
|
'computed-property-spacing': 'error',
|
|
'consistent-this': 'off',
|
|
'eol-last': 'off',
|
|
'func-call-spacing': ['warn', 'never'],
|
|
'func-names': 'off',
|
|
'func-style': 'off',
|
|
// indent currently not doing well with our wrapping style, so disabled.
|
|
'indent': ['off', 4, { 'SwitchCase': 1 }],
|
|
'key-spacing': ['warn', { 'beforeColon': false, 'afterColon': true, 'mode': minimum }],
|
|
'keyword-spacing': 'warn',
|
|
'linebreak-style': ['error', 'unix'],
|
|
'lines-around-comment': 'off',
|
|
'max-len': ['error', 132],
|
|
'max-lines': 'off',
|
|
'max-depth': 'warn',
|
|
'max-nested-callbacks': ['warn', 5],
|
|
'max-params': 'off',
|
|
'max-statements': 'off',
|
|
'max-statements-per-line': ['warn', { max: 2 }],
|
|
'new-cap': ['warn', { 'properties': false }],
|
|
'new-parens': 'warn',
|
|
'newline-after-var': 'off',
|
|
'newline-before-return': 'off',
|
|
'newline-per-chained-call': 'off',
|
|
'no-array-constructor': 'off',
|
|
'no-bitwise': 'error',
|
|
'no-continue': 'off',
|
|
'no-inline-comments': 'off',
|
|
'no-lonely-if': 'off',
|
|
'no-mixed-operators': 'off',
|
|
'no-mixed-spaces-and-tabs': 'error',
|
|
'no-multiple-empty-lines': 'warn',
|
|
'no-negated-condition': 'off',
|
|
'no-nested-ternary': 'warn',
|
|
'no-new-object': 'off',
|
|
'no-plusplus': 'off',
|
|
'no-tabs': 'error',
|
|
'no-ternary': 'off',
|
|
'no-trailing-spaces': 'error',
|
|
'no-underscore-dangle': 'off',
|
|
'no-unneeded-ternary': 'off',
|
|
'no-whitespace-before-property': 'warn',
|
|
'object-curly-newline': 'off',
|
|
'object-curly-spacing': 'warn',
|
|
'object-property-newline': 'off',
|
|
'one-var': 'off',
|
|
'one-var-declaration-per-line': ['warn', 'initializations'],
|
|
'operator-assignment': 'off',
|
|
'operator-linebreak': 'off',
|
|
'padded-blocks': 'off',
|
|
'quote-props': ['warn', 'as-needed', {'unnecessary': false, 'keywords': true, 'numbers': true}],
|
|
'quotes': 'off',
|
|
'require-jsdoc': 'warn',
|
|
'semi': 'error',
|
|
'semi-spacing': ['warn', {'before': false, 'after': true}],
|
|
'sort-vars': 'off',
|
|
'space-before-blocks': 'warn',
|
|
'space-before-function-paren': ['warn', 'never'],
|
|
'space-in-parens': 'warn',
|
|
'space-infix-ops': 'warn',
|
|
'space-unary-ops': 'warn',
|
|
'spaced-comment': 'warn',
|
|
'unicode-bom': 'error',
|
|
'wrap-regex': 'off',
|
|
|
|
// === Promises ===
|
|
'promise/always-return': 'warn',
|
|
'promise/no-return-wrap': 'warn',
|
|
'promise/param-names': 'warn',
|
|
'promise/catch-or-return': ['warn', {terminationMethod: ['catch', 'fail']}],
|
|
'promise/no-native': 'warn',
|
|
'promise/no-promise-in-callback': 'warn',
|
|
'promise/no-callback-in-promise': 'warn',
|
|
'promise/avoid-new': 'warn',
|
|
|
|
// === Deprecations ===
|
|
"no-restricted-properties": ['warn', {
|
|
'object': 'M',
|
|
'property': 'str',
|
|
'message': 'Use AMD module "core/str" or M.util.get_string()'
|
|
}],
|
|
|
|
},
|
|
overrides: [
|
|
{
|
|
files: ["**/yui/src/**/*.js"],
|
|
// Disable some rules which we can't safely define for YUI rollups.
|
|
rules: {
|
|
'no-undef': 'off',
|
|
'no-unused-vars': 'off',
|
|
'no-unused-expressions': 'off'
|
|
}
|
|
},
|
|
{
|
|
files: ["**/amd/src/*.js", "**/amd/src/**/*.js", "Gruntfile.js", ".grunt/*.js", ".grunt/tasks/*.js"],
|
|
// We support es6 now. Woot!
|
|
env: {
|
|
es6: true
|
|
},
|
|
// We're using babel transpiling so use their parser
|
|
// for linting.
|
|
parser: 'babel-eslint',
|
|
// Check AMD with some slightly stricter rules.
|
|
rules: {
|
|
'no-unused-vars': 'error',
|
|
'no-implicit-globals': 'error',
|
|
// Disable all of the rules that have babel versions.
|
|
'new-cap': 'off',
|
|
// Not using this rule for the time being because it isn't
|
|
// compatible with jQuery and ES6.
|
|
'no-invalid-this': 'off',
|
|
'object-curly-spacing': 'off',
|
|
'quotes': 'off',
|
|
'semi': 'off',
|
|
'no-unused-expressions': 'off',
|
|
// Enable all of the babel version of these rules.
|
|
'babel/new-cap': ['warn', { 'properties': false }],
|
|
// Not using this rule for the time being because it isn't
|
|
// compatible with jQuery and ES6.
|
|
'babel/no-invalid-this': 'off',
|
|
'babel/object-curly-spacing': 'warn',
|
|
// This is off in the original style int.
|
|
'babel/quotes': 'off',
|
|
'babel/semi': 'error',
|
|
'babel/no-unused-expressions': 'error',
|
|
// === Promises ===
|
|
// We have Promise now that we're using ES6.
|
|
'promise/no-native': 'off',
|
|
'promise/avoid-new': 'off'
|
|
},
|
|
parserOptions: {
|
|
'ecmaVersion': 9,
|
|
'sourceType': 'module'
|
|
}
|
|
}
|
|
]
|
|
}
|