Skip to content

Commit c42acfc

Browse files
authored
feat(babel): transform preset names in the plugin migrator (#4629)
1 parent c53a49d commit c42acfc

13 files changed

+100
-10
lines changed

.eslintignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ packages/test
44
temp
55
entry-wc.js
66
dist
7+
__testfixtures__
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
module.exports = {
2+
presets: [
3+
["@vue/app", {
4+
polyfills: []
5+
}]
6+
]
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
module.exports = {
2+
presets: [
3+
["@vue/cli-plugin-babel/preset", {
4+
polyfills: []
5+
}]
6+
]
7+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = {
2+
presets: ["@vue/app"]
3+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = {
2+
presets: ["@vue/cli-plugin-babel/preset"]
3+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
const config = {
2+
presets: [
3+
[require("@vue/babel-preset-app"), {
4+
polyfills: []
5+
}]
6+
]
7+
}
8+
9+
module.exports = config
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
const config = {
2+
presets: [
3+
[require("@vue/cli-plugin-babel/preset"), {
4+
polyfills: []
5+
}]
6+
]
7+
}
8+
9+
module.exports = config
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = {
2+
presets: [`@vue/app`]
3+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = {
2+
presets: [`@vue/cli-plugin-babel/preset`]
3+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
jest.autoMockOff()
2+
3+
const { defineTest } = require('jscodeshift/dist/testUtils')
4+
5+
defineTest(__dirname, 'usePluginPreset', null, 'default')
6+
defineTest(__dirname, 'usePluginPreset', null, 'customConfig')
7+
defineTest(__dirname, 'usePluginPreset', null, 'require')
8+
defineTest(__dirname, 'usePluginPreset', null, 'templateLiteral')
9+
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
module.exports = function (fileInfo, api) {
2+
const j = api.jscodeshift
3+
const root = j(fileInfo.source)
4+
5+
root
6+
.find(j.Literal, { value: '@vue/app' })
7+
.forEach(({ node }) => {
8+
node.value = '@vue/cli-plugin-babel/preset'
9+
})
10+
root
11+
.find(j.Literal, { value: '@vue/babel-preset-app' })
12+
.forEach(({ node }) => {
13+
node.value = '@vue/cli-plugin-babel/preset'
14+
})
15+
16+
const templateLiterals = root
17+
.find(j.TemplateLiteral, {
18+
expressions: { length: 0 }
19+
})
20+
21+
templateLiterals
22+
.find(j.TemplateElement, {
23+
value: {
24+
cooked: '@vue/app'
25+
}
26+
})
27+
.forEach(({ node }) => {
28+
node.value = { cooked: '@vue/cli-plugin-babel/preset', raw: '@vue/cli-plugin-babel/preset' }
29+
})
30+
templateLiterals
31+
.find(j.TemplateElement, {
32+
value: {
33+
cooked: '@vue/babel-preset-app'
34+
}
35+
})
36+
.forEach(({ node }) => {
37+
node.value = { cooked: '@vue/cli-plugin-babel/preset', raw: '@vue/cli-plugin-babel/preset' }
38+
})
39+
40+
return root.toSource()
41+
}

packages/@vue/cli-plugin-babel/migrator/index.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,15 @@
11
const { chalk } = require('@vue/cli-shared-utils')
22

33
module.exports = (api) => {
4-
// TODO: backport this part to v3
5-
// if (api.fromVersion('<=3.5.3')) {
6-
// // add core-js@2 as dependency
7-
// api.extendPackage({
8-
// dependencies: {
9-
// 'core-js': '^2.6.5'
10-
// }
11-
// })
12-
// }
13-
144
if (api.fromVersion('^3')) {
155
api.extendPackage({
166
dependencies: {
177
'core-js': '^3.1.2'
188
}
199
}, true)
2010

11+
api.transformScript('babel.config.js', require('../codemods/usePluginPreset'))
12+
2113
// TODO: implement a codemod to migrate polyfills
2214
api.exitLog(`core-js has been upgraded from v2 to v3.
2315
If you have any custom polyfills defined in ${chalk.yellow('babael.config.js')}, please be aware their names may have been changed.

packages/@vue/cli-plugin-babel/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
"peerDependencies": {
3030
"@vue/cli-service": "^3.0.0 || ^4.0.0-0"
3131
},
32+
"devDependencies": {
33+
"jscodeshift": "^0.6.4"
34+
},
3235
"publishConfig": {
3336
"access": "public"
3437
}

0 commit comments

Comments
 (0)