From 58fe463422a8bd2710482c51434f63754409c688 Mon Sep 17 00:00:00 2001 From: mkochheim Date: Fri, 19 Jul 2019 17:28:14 +0200 Subject: [PATCH 1/2] Fixed: "Default value of the --filename parameter results in broken build if scoped package name is used #4311" --- .../cli-service/__tests__/buildLib.spec.js | 40 +++++++++++++++++++ .../lib/commands/build/resolveLibConfig.js | 2 +- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/packages/@vue/cli-service/__tests__/buildLib.spec.js b/packages/@vue/cli-service/__tests__/buildLib.spec.js index 6e8b8e296b..4476f15e53 100644 --- a/packages/@vue/cli-service/__tests__/buildLib.spec.js +++ b/packages/@vue/cli-service/__tests__/buildLib.spec.js @@ -174,3 +174,43 @@ test('build as lib with --filename option', async () => { return window.testLib.bar })).toBe(2) }) + +test('build as lib without --name and --filename options (default to package name)', async () => { + const project = await create('build-lib-no-name-and-filename-option', defaultPreset) + await project.write('package.json', ` + { + "name": "test-lib" + } + `) + await project.write('src/main.js', ` + export default { foo: 1 } + export const bar = 2 + `) + const { stdout } = await project.run('vue-cli-service build --target lib src/main.js') + expect(stdout).toMatch('Build complete.') + + expect(project.has('dist/demo.html')).toBe(true) + expect(project.has('dist/test-lib.common.js')).toBe(true) + expect(project.has('dist/test-lib.umd.js')).toBe(true) + expect(project.has('dist/test-lib.umd.min.js')).toBe(true) +}) + +test('build as lib without --name and --filename options (default to package name, minus scope)', async () => { + const project = await create('build-lib-no-name-and-filename-option-with-scope', defaultPreset) + await project.write('package.json', ` + { + "name": "@foo/test-lib" + } + `) + await project.write('src/main.js', ` + export default { foo: 1 } + export const bar = 2 + `) + const { stdout } = await project.run('vue-cli-service build --target lib src/main.js') + expect(stdout).toMatch('Build complete.') + + expect(project.has('dist/demo.html')).toBe(true) + expect(project.has('dist/test-lib.common.js')).toBe(true) + expect(project.has('dist/test-lib.umd.js')).toBe(true) + expect(project.has('dist/test-lib.umd.min.js')).toBe(true) +}) diff --git a/packages/@vue/cli-service/lib/commands/build/resolveLibConfig.js b/packages/@vue/cli-service/lib/commands/build/resolveLibConfig.js index 8c083d0c65..ceed9e078e 100644 --- a/packages/@vue/cli-service/lib/commands/build/resolveLibConfig.js +++ b/packages/@vue/cli-service/lib/commands/build/resolveLibConfig.js @@ -21,7 +21,7 @@ module.exports = (api, { entry, name, formats, filename }, options) => { const isVueEntry = /\.vue$/.test(entry) const libName = ( name || - api.service.pkg.name || + api.service.pkg.name.replace(/^@.+\//, '') || path.basename(entry).replace(/\.(jsx?|vue)$/, '') ) filename = filename || libName From 4c37413ef0b2f0b405b11a73dcfee28d5bdd0747 Mon Sep 17 00:00:00 2001 From: mkochheim Date: Mon, 22 Jul 2019 10:20:17 +0200 Subject: [PATCH 2/2] Fixed error in case package name is not defined --- .../cli-service/lib/commands/build/resolveLibConfig.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-service/lib/commands/build/resolveLibConfig.js b/packages/@vue/cli-service/lib/commands/build/resolveLibConfig.js index ceed9e078e..cda74655f8 100644 --- a/packages/@vue/cli-service/lib/commands/build/resolveLibConfig.js +++ b/packages/@vue/cli-service/lib/commands/build/resolveLibConfig.js @@ -21,8 +21,11 @@ module.exports = (api, { entry, name, formats, filename }, options) => { const isVueEntry = /\.vue$/.test(entry) const libName = ( name || - api.service.pkg.name.replace(/^@.+\//, '') || - path.basename(entry).replace(/\.(jsx?|vue)$/, '') + ( + api.service.pkg.name + ? api.service.pkg.name.replace(/^@.+\//, '') + : path.basename(entry).replace(/\.(jsx?|vue)$/, '') + ) ) filename = filename || libName function genConfig (format, postfix = format, genHTML) {