Knovour
6/29/2017 - 2:41 AM

eslintrc

eslintrc

/*
	Paste it to your .eslintrc.js in your project
	Packages:
		babel-eslint
		eslint
		eslint-config-airbnb-base
		eslint-config-airbnb-flow   # Remove it if you don't use FlowType
		eslint-plugin-import
		eslint-import-resolver-webpack
		eslint-plugin-vue
		eslint-plugin-vue-libs
		vue-eslint-parser

	VSCode:
		Install Eslint extension
		Paste this part to your settings:
			"eslint.options": {
				"extensions": [
					".js",
					".vue"
				]
			},
			"eslint.validate": [
				"javascript",
				"javascriptreact",
				"vue",
				"vue-html"
			]
*/

const { resolve } = require('path')

module.exports = {
	parser: 'vue-eslint-parser',
	parserOptions: {
		parser: 'babel-eslint',
		ecmaVersion: 2017,
		sourceType: 'module'
	},
	env: {
		browser: true,
		node: true,
		commonjs: true,
		jest: true
	},
	extends: [
		'airbnb-base',
		'plugin:vue/recommended'
	],
	plugins: [
		'import',
		'vue',
	],
	rules: {
		'arrow-parens': [2, 'as-needed', { requireForBlockBody: false }],
		'class-methods-use-this': 0,
		'comma-dangle': 0,
		'consistent-return': 0,
		curly: ['error', 'multi-or-nest'],
		'default-case': 0,
		'func-names': ['error', 'never'],
		'global-require': 0,
		'import/extensions': ['error', {
			js: 'never',
			vue: 'never'
		}],
		'import/no-extraneous-dependencies': ['error', {
			devDependencies: ['**/*.test.js', '**/*.spec.js']
		}],
		'import/no-webpack-loader-syntax': 0,
		indent: ['error', 'tab', {
			SwitchCase: 1,
			VariableDeclarator: 1
		}],
		'max-len': ['error', 160, {
			ignoreUrls: true,
			ignoreStrings: true,
			ignoreTemplateLiterals: true
		}],
		'newline-per-chained-call': ['error', { ignoreChainWithDepth: 2 }],
		'no-alert': 0,
		'no-console': ['error', { allow: ['warn', 'error'] }],
		'no-multi-spaces': ['error', {
			exceptions: {
				VariableDeclarator: true,
				ImportDeclaration: true
			}
		}],
		'no-multiple-empty-lines': ['error', {
			max: 3,
			maxBOF: 1
		}],
		'no-param-reassign': ['error', { ignorePropertyModificationsFor: ['state'] }],
		'no-plusplus': 0,
		'no-return-assign': 0,
		'no-return-await': 0,
		'no-tabs': 0,
		'no-underscore-dangle': ['error', { allowAfterThis: true }],
		'no-unused-expressions': ['error', { allowTernary: true }],
		'object-curly-newline': ['error', { multiline: true }],
		semi: ['error', 'never'],
		'space-before-function-paren': ['error', 'always'],
		'vue/require-default-prop': 0
	},
	settings: {
		'import/resolver': {
			webpack: {
				config: {
					resolve: {
						extensions: ['.js', '.vue'],
						alias: { '~': resolve(__dirname, 'src') }
					}
				}
			}
		}
	}
}
/*
	Paste it to your .eslintrc.js in your project
	Packages:
		babel-eslint
		eslint
		eslint-config-airbnb-base
		eslint-config-airbnb-flow: Remove it if you don't use FlowType
		eslint-plugin-import
*/

module.exports = {
	parser: 'babel-eslint',
	env: {
		browser: true,
		node: true,
		commonjs: true,
		jest: true,
		jquery: true
	},
	extends: [
		'airbnb-base',
		'airbnb-flow' // Remove it if you don't use FlowType
	],
	plugins: [
		'import'
	],
	rules: {
		'arrow-parens': [2, 'as-needed', { requireForBlockBody: false }],
		'class-methods-use-this': 0,
		'comma-dangle': 0,
		'consistent-return': 0,
		curly: ['error', 'multi-or-nest'],
		'default-case': 0,
		'func-names': ['error', 'never'],
		'global-require': 0,
		'import/no-extraneous-dependencies': ['error', { 
			devDependencies: ['**/*.test.js', '**/*.spec.js']
		}],
		'import/no-webpack-loader-syntax': 0,
		indent: ['error', 'tab', {
			SwitchCase: 1,
			VariableDeclarator: 1
		}],
		'key-spacing': ['error', { mode: 'minimum' }],
		'max-len': ['error', 120, {
			ignoreUrls: true,
			ignoreStrings: true,
			ignoreTemplateLiterals: true
		}],
		'newline-per-chained-call': ['error', { ignoreChainWithDepth: 2 }],
		'no-alert': 0,
		'no-console': ['error', { allow: ['warn', 'error'] }],
		'no-multi-spaces': ['error', {
			exceptions: {
				VariableDeclarator: true,
				ImportDeclaration: true
			}
		}],
		'no-multiple-empty-lines': ['error', {
			max: 3,
			maxBOF: 1
		}],
		'no-plusplus': 0,
		'no-return-await': 0,
		'no-tabs': 0,
		'no-unused-expressions': ['error', { allowTernary: true }],
		semi: ['error', 'never']
	}
}