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..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 || - 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) {