From 157d67a737e18e190731396de3b6a0cdb21643b7 Mon Sep 17 00:00:00 2001 From: Marcel Jahn Date: Thu, 29 Aug 2019 13:18:16 +0200 Subject: [PATCH] fix(scope_regex): supporting dots in scopes --- .../cli-shared-utils/__tests__/pluginResolution.spec.js | 8 ++++++++ packages/@vue/cli-shared-utils/lib/pluginResolution.js | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-shared-utils/__tests__/pluginResolution.spec.js b/packages/@vue/cli-shared-utils/__tests__/pluginResolution.spec.js index a5dfdaf76c..b7c32e4fe5 100644 --- a/packages/@vue/cli-shared-utils/__tests__/pluginResolution.spec.js +++ b/packages/@vue/cli-shared-utils/__tests__/pluginResolution.spec.js @@ -11,6 +11,7 @@ test('isPlugin', () => { expect(isPlugin('@vue/cli-plugin-foo')).toBe(true) expect(isPlugin('vue-cli-plugin-foo')).toBe(true) expect(isPlugin('@foo/vue-cli-plugin-foo')).toBe(true) + expect(isPlugin('@foo.bar/vue-cli-plugin-foo')).toBe(true) }) test('isOfficialPlugin', () => { @@ -18,12 +19,14 @@ test('isOfficialPlugin', () => { expect(isOfficialPlugin('@vue/cli-plugin-foo')).toBe(true) expect(isOfficialPlugin('vue-cli-plugin-foo')).toBe(false) expect(isOfficialPlugin('@foo/vue-cli-plugin-foo')).toBe(false) + expect(isOfficialPlugin('@foo.bar/vue-cli-plugin-foo')).toBe(false) }) test('toShortPluginId', () => { expect(toShortPluginId('@vue/cli-plugin-foo')).toBe('foo') expect(toShortPluginId('vue-cli-plugin-foo')).toBe('foo') expect(toShortPluginId('@foo/vue-cli-plugin-foo')).toBe('foo') + expect(toShortPluginId('@foo.bar/vue-cli-plugin-foo')).toBe('foo') }) test('resolvePluginId', () => { @@ -31,10 +34,12 @@ test('resolvePluginId', () => { expect(resolvePluginId('@vue/cli-plugin-foo')).toBe('@vue/cli-plugin-foo') expect(resolvePluginId('vue-cli-plugin-foo')).toBe('vue-cli-plugin-foo') expect(resolvePluginId('@foo/vue-cli-plugin-foo')).toBe('@foo/vue-cli-plugin-foo') + expect(resolvePluginId('@foo.bar/vue-cli-plugin-foo')).toBe('@foo.bar/vue-cli-plugin-foo') // scoped short expect(resolvePluginId('@vue/foo')).toBe('@vue/cli-plugin-foo') expect(resolvePluginId('@foo/foo')).toBe('@foo/vue-cli-plugin-foo') + expect(resolvePluginId('@foo.bar/foo')).toBe('@foo.bar/vue-cli-plugin-foo') // default short expect(resolvePluginId('foo')).toBe('vue-cli-plugin-foo') @@ -45,13 +50,16 @@ test('matchesPluginId', () => { expect(matchesPluginId('@vue/cli-plugin-foo', '@vue/cli-plugin-foo')).toBe(true) expect(matchesPluginId('vue-cli-plugin-foo', 'vue-cli-plugin-foo')).toBe(true) expect(matchesPluginId('@foo/vue-cli-plugin-foo', '@foo/vue-cli-plugin-foo')).toBe(true) + expect(matchesPluginId('@foo.bar/vue-cli-plugin-foo', '@foo.bar/vue-cli-plugin-foo')).toBe(true) // short without scope expect(matchesPluginId('foo', '@vue/cli-plugin-foo')).toBe(true) expect(matchesPluginId('foo', 'vue-cli-plugin-foo')).toBe(true) expect(matchesPluginId('foo', '@foo/vue-cli-plugin-foo')).toBe(true) + expect(matchesPluginId('foo', '@foo.bar/vue-cli-plugin-foo')).toBe(true) // short with scope expect(matchesPluginId('@vue/foo', '@vue/cli-plugin-foo')).toBe(true) expect(matchesPluginId('@foo/foo', '@foo/vue-cli-plugin-foo')).toBe(true) + expect(matchesPluginId('@foo.bar/foo', '@foo.bar/vue-cli-plugin-foo')).toBe(true) }) diff --git a/packages/@vue/cli-shared-utils/lib/pluginResolution.js b/packages/@vue/cli-shared-utils/lib/pluginResolution.js index 7518d08d31..43576f0463 100644 --- a/packages/@vue/cli-shared-utils/lib/pluginResolution.js +++ b/packages/@vue/cli-shared-utils/lib/pluginResolution.js @@ -1,5 +1,5 @@ -const pluginRE = /^(@vue\/|vue-|@[\w-]+\/vue-)cli-plugin-/ -const scopeRE = /^@[\w-]+\// +const pluginRE = /^(@vue\/|vue-|@[\w-]+(\.)?[\w-]+\/vue-)cli-plugin-/ +const scopeRE = /^@[\w-]+(\.)?[\w-]+\// const officialRE = /^@vue\// const officialPlugins = [