提交 72f778f5 编写于 作者: fxy060608's avatar fxy060608

fix(cli): compatible with @vue/cli-plugin-babel@4.2.3 #1394

上级 b611f3df
const t = require('@babel/types')
const babelTemplate = require('@babel/template').default
const buildDynamicImport = babelTemplate(`var IMPORT_NAME = ()=>import(IMPORT_SOURCE)`, {
preserveComments: true,
plugins: [
'dynamicImport'
]
})
// const buildDynamicImport = babelTemplate(`var IMPORT_NAME = ()=>import(IMPORT_SOURCE)`, {
// preserveComments: true,
// plugins: [
// 'dynamicImport'
// ]
// })
// 已废弃,@vue/cli-plugin-babel@4 增加了 dynamic import 转换
// var test = ()=>import(/* webpackChunkName: "components/test" */'../../components/test')
function getDynamicImport (name, source, chunkName) {
const stringLiteral = t.stringLiteral(source)
const dynamicImportComment = {
type: 'CommentBlock',
value: `webpackChunkName: "${chunkName}"`
}
stringLiteral.leadingComments = [dynamicImportComment]
return buildDynamicImport({
// function getDynamicImport (name, source, chunkName) {
// const stringLiteral = t.stringLiteral(source)
// const dynamicImportComment = {
// type: 'CommentBlock',
// value: `webpackChunkName: "${chunkName}"`
// }
// stringLiteral.leadingComments = [dynamicImportComment]
// return buildDynamicImport({
// IMPORT_NAME: t.identifier(name),
// IMPORT_SOURCE: stringLiteral
// })
// }
// var test = function(resolve) {require.ensure([], () => resolve(require('../../components/test')),'components/test')}
const buildRequireEnsure = babelTemplate(
`var IMPORT_NAME = function(){require.ensure([],()=>resolve(require(IMPORT_SOURCE)),CHUNK_NAME)}`
)
function getRequireEnsure (name, source, chunkName) {
return buildRequireEnsure({
IMPORT_NAME: t.identifier(name),
IMPORT_SOURCE: stringLiteral
IMPORT_SOURCE: t.stringLiteral(source),
CHUNK_NAME: t.stringLiteral(chunkName)
})
}
......@@ -30,7 +43,7 @@ module.exports = function ({
const dynamicImport = state.opts.dynamicImports[path.node.source.value]
if (dynamicImport) {
path.insertBefore(
getDynamicImport(
getRequireEnsure(
path.node.specifiers[0].local.name,
dynamicImport.source,
dynamicImport.chunkName
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册