Skip to content

Commit 1279b3e

Browse files
committed
fix: fix transpileDependencies by always using babel.config.js
1 parent 1dfe73b commit 1279b3e

File tree

3 files changed

+77
-4
lines changed

3 files changed

+77
-4
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
jest.setTimeout(30000)
2+
3+
const { defaultPreset } = require('@vue/cli/lib/options')
4+
const create = require('@vue/cli-test-utils/createTestProject')
5+
6+
let project
7+
8+
beforeAll(async () => {
9+
project = await create('babel-transpile-deps', defaultPreset)
10+
11+
await project.write(
12+
'node_modules/external-dep/package.json',
13+
`{ "name": "external-dep", "version": "1.0.0", "main": "index.js" }`
14+
)
15+
16+
await project.write(
17+
'node_modules/external-dep/index.js',
18+
`const test = () => "__TEST__";\nexport default test`
19+
)
20+
21+
let $packageJson = await project.read('package.json')
22+
23+
$packageJson = JSON.parse($packageJson)
24+
$packageJson.dependencies['external-dep'] = '1.0.0'
25+
$packageJson = JSON.stringify($packageJson)
26+
27+
await project.write(
28+
'package.json',
29+
$packageJson
30+
)
31+
32+
let $mainjs = await project.read('src/main.js')
33+
34+
$mainjs = `import test from 'external-dep'\n${$mainjs}\nconsole.log(test())`
35+
36+
await project.write(
37+
'src/main.js',
38+
$mainjs
39+
)
40+
})
41+
42+
test('dep from node_modules should not been transpiled', async () => {
43+
const { stdout } = await project.run('vue-cli-service build')
44+
45+
let $vendorjs = stdout.match(/(js\/vendors~app\.[^.]+\.js)/)[1]
46+
47+
$vendorjs = `dist/${$vendorjs}`
48+
$vendorjs = await project.read($vendorjs)
49+
50+
expect($vendorjs).toMatch('() => "__TEST__"')
51+
})
52+
53+
test('dep from node_modules should been transpiled', async () => {
54+
await project.write(
55+
'vue.config.js',
56+
`module.exports = { transpileDependencies: ['external-dep'] }`
57+
)
58+
59+
const { stdout } = await project.run('vue-cli-service build')
60+
61+
let $vendorjs = stdout.match(/(js\/vendors~app\.[^.]+\.js)/)[1]
62+
63+
$vendorjs = `dist/${$vendorjs}`
64+
$vendorjs = await project.read($vendorjs)
65+
66+
expect($vendorjs).toMatch('return "__TEST__"')
67+
})

packages/@vue/cli/lib/Generator.js

+9-3
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,15 @@ module.exports = class Generator {
8888
for (const key in this.pkg) {
8989
extract(key)
9090
}
91-
} else if (!process.env.VUE_CLI_TEST) {
92-
// by default, always extract vue.config.js
93-
extract('vue')
91+
} else {
92+
if (!process.env.VUE_CLI_TEST) {
93+
// by default, always extract vue.config.js
94+
extract('vue')
95+
}
96+
// always extract babel.config.js as this is the only way to apply
97+
// project-wide configuration even to dependencies.
98+
// TODO: this can be removed when Babel supports root: true in package.json
99+
extract('babel')
94100
}
95101
}
96102

packages/@vue/cli/lib/util/configTransforms.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ function transformYAML (value, filename, source) {
7777

7878
module.exports = {
7979
vue: makeJSTransform('vue.config.js'),
80-
babel: makeJSONTransform('.babelrc'),
80+
babel: makeJSTransform('babel.config.js'),
8181
postcss: makeMutliExtensionJSONTransform('.postcssrc', true),
8282
eslintConfig: makeMutliExtensionJSONTransform('.eslintrc', true),
8383
jest: makeJSTransform('jest.config.js')

0 commit comments

Comments
 (0)