From a26669c25f95ab6e99999e13676cf488fb277a60 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Mon, 11 Jun 2018 21:05:32 +0200 Subject: [PATCH] feat(ui): open eslintrc suggestion --- packages/@vue/cli-plugin-eslint/package.json | 3 +- packages/@vue/cli-plugin-eslint/ui.js | 37 +++++++++++++++++++- packages/@vue/cli-ui/locales/en.json | 5 +++ 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-plugin-eslint/package.json b/packages/@vue/cli-plugin-eslint/package.json index d618a392f9..3adfbff06c 100644 --- a/packages/@vue/cli-plugin-eslint/package.json +++ b/packages/@vue/cli-plugin-eslint/package.json @@ -26,6 +26,7 @@ "babel-eslint": "^8.2.3", "eslint": "^4.19.1", "eslint-loader": "^2.0.0", - "eslint-plugin-vue": "^4.5.0" + "eslint-plugin-vue": "^4.5.0", + "launch-editor": "^2.2.1" } } diff --git a/packages/@vue/cli-plugin-eslint/ui.js b/packages/@vue/cli-plugin-eslint/ui.js index ae19618a77..8870888945 100644 --- a/packages/@vue/cli-plugin-eslint/ui.js +++ b/packages/@vue/cli-plugin-eslint/ui.js @@ -1,7 +1,9 @@ module.exports = api => { + const CONFIG = 'eslintrc' + // Config file api.describeConfig({ - id: 'eslintrc', + id: CONFIG, name: 'ESLint configuration', description: 'eslint.config.eslint.description', link: 'https://github.com/vuejs/eslint-plugin-vue', @@ -226,4 +228,37 @@ module.exports = api => { if (answers.noFix) args.push('--no-fix') } }) + + const OPEN_ESLINTRC = 'vue-eslint-open-eslintrc' + + api.onViewOpen(({ view }) => { + if (view.id !== 'vue-project-configurations') { + removeSuggestions() + } + }) + + api.onConfigRead(({ config }) => { + if (config.id === CONFIG) { + api.addSuggestion({ + id: OPEN_ESLINTRC, + type: 'action', + label: 'eslint.suggestions.open-eslintrc.label', + handler () { + const file = config.foundFiles.eslint.path + console.log('open', file) + const launch = require('launch-editor') + launch(file) + return { + keep: true + } + } + }) + } else { + removeSuggestions() + } + }) + + function removeSuggestions () { + [OPEN_ESLINTRC].forEach(id => api.removeSuggestion(id)) + } } diff --git a/packages/@vue/cli-ui/locales/en.json b/packages/@vue/cli-ui/locales/en.json index 89cf5816e1..d771a2625e 100644 --- a/packages/@vue/cli-ui/locales/en.json +++ b/packages/@vue/cli-ui/locales/en.json @@ -461,6 +461,11 @@ "description": "Lints and fixes files", "noFix": "Do not fix errors" } + }, + "suggestions": { + "open-eslintrc": { + "label": "Open eslintrc" + } } }, "pwa": {