mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-01-16 04:10:20 -06:00
81 lines
2.0 KiB
JavaScript
81 lines
2.0 KiB
JavaScript
module.exports = cli => {
|
|
const chalk = require('chalk')
|
|
const { hasGit } = require('@vue/cli-shared-utils')
|
|
|
|
cli.injectFeature({
|
|
name: 'Linter / Formatter',
|
|
value: 'linter',
|
|
short: 'Linter',
|
|
description: 'Check and enforce code quality with ESLint or Prettier',
|
|
link: 'https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint',
|
|
plugins: ['eslint'],
|
|
checked: true
|
|
})
|
|
|
|
cli.injectPrompt({
|
|
name: 'eslintConfig',
|
|
when: answers => answers.features.includes('linter'),
|
|
type: 'list',
|
|
message: 'Pick a linter / formatter config:',
|
|
description: 'Checking code errors and enforcing an homogeoneous code style is recommended.',
|
|
choices: answers => [
|
|
...(
|
|
answers.features.includes('ts')
|
|
? [{
|
|
name: `TSLint`,
|
|
value: 'tslint',
|
|
short: 'TSLint'
|
|
}]
|
|
: []
|
|
),
|
|
{
|
|
name: 'ESLint with error prevention only',
|
|
value: 'base',
|
|
short: 'Basic'
|
|
},
|
|
{
|
|
name: 'ESLint + Airbnb config',
|
|
value: 'airbnb',
|
|
short: 'Airbnb'
|
|
},
|
|
{
|
|
name: 'ESLint + Standard config',
|
|
value: 'standard',
|
|
short: 'Standard'
|
|
},
|
|
{
|
|
name: 'ESLint + Prettier',
|
|
value: 'prettier',
|
|
short: 'Prettier'
|
|
}
|
|
]
|
|
})
|
|
|
|
cli.injectPrompt({
|
|
name: 'lintOn',
|
|
message: 'Pick additional lint features:',
|
|
when: answers => answers.features.includes('linter'),
|
|
type: 'checkbox',
|
|
choices: [
|
|
{
|
|
name: 'Lint on save',
|
|
value: 'save',
|
|
checked: true
|
|
},
|
|
{
|
|
name: 'Lint and fix on commit' + (hasGit() ? '' : chalk.red(' (requires Git)')),
|
|
value: 'commit'
|
|
}
|
|
]
|
|
})
|
|
|
|
cli.onPromptComplete((answers, options) => {
|
|
if (answers.features.includes('linter') && answers.eslintConfig !== 'tslint') {
|
|
options.plugins['@vue/cli-plugin-eslint'] = {
|
|
config: answers.eslintConfig,
|
|
lintOn: answers.lintOn
|
|
}
|
|
}
|
|
})
|
|
}
|