UNPKG

@ycmfe/vue-cli-plugin-cactus-eslint

Version:
68 lines (61 loc) 2.02 kB
exports.config = (api, preset) => { const config = { root: true, env: { node: true }, extends: ['plugin:vue/essential'], parserOptions: { ecmaVersion: 2020, }, rules: { 'no-console': makeJSOnlyValue(`process.env.NODE_ENV === 'production' ? 'warn' : 'off'`), 'no-debugger': makeJSOnlyValue(`process.env.NODE_ENV === 'production' ? 'warn' : 'off'`), '@typescript-eslint/member-delimiter-style': 'off', 'vue/component-tags-order': [ 'error', { order: ['template', 'script', 'style'], }, ], }, } if (api.hasPlugin('babel') && !api.hasPlugin('typescript')) { config.parserOptions = { parser: 'babel-eslint', } } if (preset === 'airbnb') { config.extends.push('@vue/airbnb') } else if (preset === 'standard') { config.extends.push('@vue/standard') } else if (preset === 'prettier') { config.extends.push(...['eslint:recommended', '@vue/prettier']) } else if (preset === 'alloy') { config.extends.push('alloy', 'alloy/vue') } else { // default config.extends.push('eslint:recommended') } if (api.hasPlugin('typescript')) { // typically, typescript ruleset should be appended to the end of the `extends` array // but that is not the case for prettier, as there are conflicting rules if (preset === 'prettier') { config.extends.pop() config.extends.push( ...['@vue/typescript/recommended', '@vue/prettier', '@vue/prettier/@typescript-eslint'] ) } else { config.extends.push('@vue/typescript/recommended') } } return config } // __expression is a special flag that allows us to customize stringification // output when extracting configs into standalone files function makeJSOnlyValue(str) { const fn = () => {} fn.__expression = str return fn } const baseExtensions = ['.js', '.jsx', '.vue'] exports.extensions = (api) => api.hasPlugin('typescript') ? baseExtensions.concat('.ts', '.tsx') : baseExtensions