diff options
author | Joas Schilling <coding@schilljs.com> | 2019-03-12 17:57:39 +0300 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2019-03-18 13:12:51 +0300 |
commit | c6e1cbdc43e39a56af0fa2186f8a077ea29c2ecc (patch) | |
tree | 1b47ba50f7ee0c46b2b53e61bfdbb48cc47e0c0b /.eslintrc.js | |
parent | af9f35b6af24c2e7746b304a09e8e6bb4b6c1541 (diff) |
Add eslint
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to '.eslintrc.js')
-rw-r--r-- | .eslintrc.js | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..9734a0e --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,99 @@ +module.exports = { + root: true, + env: { + browser: true, + es6: true, + node: true + }, + globals: { + oc_config: true, + oca_contacts: true, + moment: true, + escapeHTML: true, + n: true, + t: true, + OC: true, + OCA: true, + OCP: true, + Vue: true, + $: true // FIXME should remove jQuery dependency + }, + parserOptions: { + parser: 'babel-eslint', + ecmaVersion: 6 + }, + extends: [ + 'eslint:recommended', + 'plugin:import/errors', + 'plugin:import/warnings', + 'plugin:node/recommended', + 'plugin:vue/essential', + 'plugin:vue/recommended', + 'standard' + ], + settings: { + 'import/resolver': { + webpack: { + config: 'src/webpack.common.js' + }, + node: { + paths: ['src'], + extensions: ['.js', '.vue'] + } + } + }, + plugins: ['vue', 'node'], + rules: { + "no-control-regex": 0, + + // space before function () + 'space-before-function-paren': ['error', 'never'], + // curly braces always space + 'object-curly-spacing': ['error', 'always'], + // stay consistent with array brackets + 'array-bracket-newline': ['error', 'consistent'], + // 1tbs brace style + 'brace-style': 'error', + // tabs only + indent: ['error', 'tab'], + 'no-tabs': 0, + 'vue/html-indent': ['error', 'tab'], + // only debug console + 'no-console': ['error', { allow: ['error', 'warn', 'info', 'debug'] }], + // classes blocks + 'padded-blocks': ['error', { classes: 'always' }], + // always have the operator in front + 'operator-linebreak': ['error', 'before'], + // ternary on multiline + 'multiline-ternary': ['error', 'always-multiline'], + // force proper JSDocs + 'valid-jsdoc': [2, { + 'prefer': { + 'return': 'returns' + }, + 'requireReturn': false, + 'requireReturnDescription': false + }], + // es6 import/export and require + 'node/no-unpublished-require': ['off'], + 'node/no-unsupported-features/es-syntax': ['off'], + // kebab case components for vuejs + 'vue/component-name-in-template-casing': ['error', 'kebab-case'], + // space before self-closing elements + 'vue/html-closing-bracket-spacing': 'error', + // no ending html tag on a new line + 'vue/html-closing-bracket-newline': ['error', { multiline: 'never' }], + // code spacing with attributes + 'vue/max-attributes-per-line': [ + 'error', + { + singleline: 3, + multiline: { + max: 3, + allowFirstLine: true + } + } + ], + 'vue/no-v-html': ['off'] + } +} |