| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | const inquirer = require('inquirer')const { semver } = require('@vue/cli-shared-utils')module.exports = async (api) => {  const pkg = require(api.resolve('package.json'))  let localESLintRange = pkg.devDependencies.eslint  // if project is scaffolded by Vue CLI 3.0.x or earlier,  // the ESLint dependency (ESLint v4) is inside @vue/cli-plugin-eslint;  // in Vue CLI v4 it should be extracted to the project dependency list.  if (api.fromVersion('^3') && !localESLintRange) {    localESLintRange = '^4.19.1'    api.extendPackage({      devDependencies: {        eslint: localESLintRange,        'babel-eslint': '^8.2.5',        'eslint-plugin-vue': '^4.5.0'      }    })  }  const localESLintMajor = semver.major(    semver.maxSatisfying(['4.99.0', '5.99.0', '6.99.0', '7.99.0'], localESLintRange) ||      // in case the user does not specify a typical caret range;      // it is used as **fallback** because the user may have not previously      // installed eslint yet, such as in the case that they are from v3.0.x      require('eslint/package.json').version  )  if (localESLintMajor >= 6) {    return  }  const { confirmUpgrade } = await inquirer.prompt([{    name: 'confirmUpgrade',    type: 'confirm',    message:    `Your current ESLint version is v${localESLintMajor}.\n` +    `The latest major version which supported by vue-cli is v6.\n` +    `Do you want to upgrade? (May contain breaking changes)\n`  }])  if (confirmUpgrade) {    const { getDeps } = require('../eslintDeps')    const newDeps = getDeps(api)    if (pkg.devDependencies['@vue/eslint-config-airbnb']) {      Object.assign(newDeps, getDeps(api, 'airbnb'))    }    if (pkg.devDependencies['@vue/eslint-config-standard']) {      Object.assign(newDeps, getDeps(api, 'standard'))    }    if (pkg.devDependencies['@vue/eslint-config-prettier']) {      Object.assign(newDeps, getDeps(api, 'prettier'))    }    api.extendPackage({ devDependencies: newDeps }, { warnIncompatibleVersions: false })    // in case anyone's upgrading from the legacy `typescript-eslint-parser`    if (api.hasPlugin('typescript')) {      api.extendPackage({        eslintConfig: {          parserOptions: {            parser: '@typescript-eslint/parser'          }        }      })    }    // TODO:    // transform `@vue/prettier` to `eslint:recommended` + `@vue/prettier`    // transform `@vue/typescript` to `@vue/typescript/recommended` and also fix prettier compatibility for it  }}
 |