From de7d853e05dff91cb43ba316fbe5e2914754a908 Mon Sep 17 00:00:00 2001 From: javoski Date: Wed, 25 Apr 2018 17:02:45 +0800 Subject: [PATCH 1/2] fix(cli-service): should not add a leading slash to baseUrl when it is absolute --- packages/@vue/cli-service/__tests__/Service.spec.js | 12 ++++++++++++ packages/@vue/cli-service/lib/Service.js | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/@vue/cli-service/__tests__/Service.spec.js b/packages/@vue/cli-service/__tests__/Service.spec.js index 9a0d769209..75c3e03d16 100644 --- a/packages/@vue/cli-service/__tests__/Service.spec.js +++ b/packages/@vue/cli-service/__tests__/Service.spec.js @@ -52,6 +52,18 @@ test('load project options from package.json', () => { expect(service.projectOptions.lintOnSave).toBe(true) }) +test('handle option baseUrl and outputDir correctly', () => { + mockPkg({ + vue: { + baseUrl: 'https://foo.com/bar', + outputDir: '/public/' + } + }) + const service = createMockService() + expect(service.projectOptions.baseUrl).toBe('https://foo.com/bar/') + expect(service.projectOptions.outputDir).toBe('public') +}) + test('load project options from vue.config.js', () => { process.env.VUE_CLI_SERVICE_CONFIG_PATH = `/vue.config.js` fs.writeFileSync('/vue.config.js', `module.exports = { lintOnSave: false }`) diff --git a/packages/@vue/cli-service/lib/Service.js b/packages/@vue/cli-service/lib/Service.js index c903ff9aac..ca9b4b8aab 100644 --- a/packages/@vue/cli-service/lib/Service.js +++ b/packages/@vue/cli-service/lib/Service.js @@ -224,7 +224,7 @@ module.exports = class Service { function ensureSlash (config, key) { if (typeof config[key] === 'string') { config[key] = config[key] - .replace(/^([^/.])/, '/$1') + .replace(/^([^/.(https?:)])/, '/$1') .replace(/([^/])$/, '$1/') } } From d15a7fcc14fd09efa810eec1d521502d3a9bf1b7 Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 26 Apr 2018 16:18:50 -0400 Subject: [PATCH 2/2] Update Service.js --- packages/@vue/cli-service/lib/Service.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/@vue/cli-service/lib/Service.js b/packages/@vue/cli-service/lib/Service.js index ca9b4b8aab..a2b1e776b0 100644 --- a/packages/@vue/cli-service/lib/Service.js +++ b/packages/@vue/cli-service/lib/Service.js @@ -222,10 +222,12 @@ module.exports = class Service { } function ensureSlash (config, key) { - if (typeof config[key] === 'string') { - config[key] = config[key] - .replace(/^([^/.(https?:)])/, '/$1') - .replace(/([^/])$/, '$1/') + let val = config[key] + if (typeof val === 'string') { + if (!/^https?:/.test(val)) { + val = val.replace(/^([^/.])/, '/$1') + } + config[key] = val.replace(/([^/])$/, '$1/') } }