diff --git a/packages/@vue/cli-plugin-babel/__tests__/transpileDependencies.spec.js b/packages/@vue/cli-plugin-babel/__tests__/transpileDependencies.spec.js index 0edccfe948..30a10f0a31 100644 --- a/packages/@vue/cli-plugin-babel/__tests__/transpileDependencies.spec.js +++ b/packages/@vue/cli-plugin-babel/__tests__/transpileDependencies.spec.js @@ -26,6 +26,16 @@ beforeAll(async () => { `const test = () => "__TEST__";\nexport default test` ) + await project.write( + 'node_modules/@scope/external-dep/package.json', + `{ "name": "@scope/external-dep", "version": "1.0.0", "main": "index.js" }` + ) + + await project.write( + 'node_modules/@scope/external-dep/index.js', + `const test = () => "__SCOPE_TEST__";\nexport default test` + ) + let $packageJson = await project.read('package.json') $packageJson = JSON.parse($packageJson) @@ -39,7 +49,12 @@ beforeAll(async () => { let $mainjs = await project.read('src/main.js') - $mainjs = `import test from 'external-dep'\n${$mainjs}\ntest()` + $mainjs = ` + import test from 'external-dep' + import scopeTest from '@scope/external-dep' + ${$mainjs} + test() + scopeTest()` await project.write( 'src/main.js', @@ -59,4 +74,6 @@ test('dep from node_modules should been transpiled', async () => { ) await project.run('vue-cli-service build') expect(await readVendorFile()).toMatch('return "__TEST__"') + + expect(await readVendorFile()).toMatch('return "__SCOPE_TEST__"') }) diff --git a/packages/@vue/cli-plugin-babel/index.js b/packages/@vue/cli-plugin-babel/index.js index 0ae7e9042d..88c3a7689a 100644 --- a/packages/@vue/cli-plugin-babel/index.js +++ b/packages/@vue/cli-plugin-babel/index.js @@ -1,3 +1,5 @@ +const path = require('path') + module.exports = (api, options) => { const useThreads = process.env.NODE_ENV === 'production' && options.parallel const cliServicePath = require('path').dirname(require.resolve('@vue/cli-service')) @@ -17,7 +19,13 @@ module.exports = (api, options) => { return true } // check if this is something the user explicitly wants to transpile - if (options.transpileDependencies.some(dep => filepath.match(dep))) { + if (options.transpileDependencies.some(dep => { + if (typeof dep === 'string') { + return filepath.includes(path.normalize(dep)) + } else { + return filepath.match(dep) + } + })) { return false } // Don't transpile node_modules