mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-01-12 10:09:42 -06:00
The recast print utility prefers double quotes by default, this may fail many users' eslint check, so we have to implement a detection utility to tell if double quotes are actually needed. Template literals are also converted to string literals, to make things easier for future iterations.
42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
module.exports = function (fileInfo, api) {
|
|
const j = api.jscodeshift
|
|
const root = j(fileInfo.source)
|
|
|
|
const useDoubleQuote = root.find(j.Literal).some(({ node }) => node.raw.startsWith('"'))
|
|
|
|
root
|
|
.find(j.Literal, { value: '@vue/app' })
|
|
.replaceWith(j.stringLiteral('@vue/cli-plugin-babel/preset'))
|
|
root
|
|
.find(j.Literal, { value: '@vue/babel-preset-app' })
|
|
.replaceWith(j.stringLiteral('@vue/cli-plugin-babel/preset'))
|
|
|
|
const templateLiterals = root
|
|
.find(j.TemplateLiteral, {
|
|
expressions: { length: 0 }
|
|
})
|
|
|
|
templateLiterals
|
|
.find(j.TemplateElement, {
|
|
value: {
|
|
cooked: '@vue/app'
|
|
}
|
|
})
|
|
.closest(j.TemplateLiteral)
|
|
.replaceWith(j.stringLiteral('@vue/cli-plugin-babel/preset'))
|
|
|
|
templateLiterals
|
|
.find(j.TemplateElement, {
|
|
value: {
|
|
cooked: '@vue/babel-preset-app'
|
|
}
|
|
})
|
|
.closest(j.TemplateLiteral)
|
|
.replaceWith(j.stringLiteral('@vue/cli-plugin-babel/preset'))
|
|
|
|
return root.toSource({
|
|
lineTerminator: '\n',
|
|
quote: useDoubleQuote ? 'double' : 'single'
|
|
})
|
|
}
|