diff --git a/packages/@vue/cli-service/__tests__/Service.spec.js b/packages/@vue/cli-service/__tests__/Service.spec.js index a71c8d4e9..dfd6cc005 100644 --- a/packages/@vue/cli-service/__tests__/Service.spec.js +++ b/packages/@vue/cli-service/__tests__/Service.spec.js @@ -94,6 +94,26 @@ test('handle option baseUrl and outputDir correctly', () => { expect(service.projectOptions.outputDir).toBe('/public') }) +test('normalize baseUrl when relative', () => { + mockPkg({ + vue: { + baseUrl: './foo/bar' + } + }) + const service = createMockService() + expect(service.projectOptions.baseUrl).toBe('foo/bar/') +}) + +test('keep baseUrl when empty', () => { + mockPkg({ + vue: { + baseUrl: '' + } + }) + const service = createMockService() + expect(service.projectOptions.baseUrl).toBe('') +}) + 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 2cdd0f89b..2d38010b6 100644 --- a/packages/@vue/cli-service/lib/Service.js +++ b/packages/@vue/cli-service/lib/Service.js @@ -298,10 +298,10 @@ module.exports = class Service { } // normalize some options + ensureSlash(resolved, 'baseUrl') if (typeof resolved.baseUrl === 'string') { resolved.baseUrl = resolved.baseUrl.replace(/^\.\//, '') } - ensureSlash(resolved, 'baseUrl') removeSlash(resolved, 'outputDir') // deprecation warning