12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- module.exports = cli => {
- const { chalk, 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 => [
- {
- 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'
- },
- ...(
- answers.features.includes('ts')
- ? [{
- name: `TSLint (deprecated)`,
- value: 'tslint',
- short: 'TSLint'
- }]
- : []
- )
- ]
- })
- 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
- }
- }
- })
- }
|