From 926f74eed21521af3b0a384e91a1e14646c31ac7 Mon Sep 17 00:00:00 2001 From: Toru Nagashima Date: Sun, 14 Jul 2019 10:58:33 +0900 Subject: [PATCH] Fix: --init with Vue.js failed (fixes #11970) --- lib/init/config-initializer.js | 23 +++++++++++++++-------- tests/lib/init/config-initializer.js | 11 +++++++++++ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/lib/init/config-initializer.js b/lib/init/config-initializer.js index 4d52377d267..0c0d057cb41 100644 --- a/lib/init/config-initializer.js +++ b/lib/init/config-initializer.js @@ -100,14 +100,21 @@ function getModulesList(config, installESLint) { modules[`eslint-plugin-${plugin}`] = "latest"; } } - if (config.extends && config.extends.indexOf("eslint:") === -1) { - const moduleName = `eslint-config-${config.extends}`; - - modules[moduleName] = "latest"; - Object.assign( - modules, - getPeerDependencies(`${moduleName}@latest`) - ); + if (config.extends) { + const extendList = Array.isArray(config.extends) ? config.extends : [config.extends]; + + for (const extend of extendList) { + if (extend.startsWith("eslint:") || extend.startsWith("plugin:")) { + continue; + } + const moduleName = `eslint-config-${extend}`; + + modules[moduleName] = "latest"; + Object.assign( + modules, + getPeerDependencies(`${moduleName}@latest`) + ); + } } if (installESLint === false) { diff --git a/tests/lib/init/config-initializer.js b/tests/lib/init/config-initializer.js index 68cd06e1d1a..4ee6ff6b732 100644 --- a/tests/lib/init/config-initializer.js +++ b/tests/lib/init/config-initializer.js @@ -306,6 +306,17 @@ describe("configInitializer", () => { }); }); }); + + it("should support the standard style guide with Vue.js", () => { + const config = { + plugins: ["vue"], + extends: ["plugin:vue/essential", "standard"] + }; + const modules = init.getModulesList(config); + + assert.include(modules, "eslint-plugin-vue@latest"); + assert.include(modules, "eslint-config-standard@latest"); + }); }); describe("auto", () => {